2004-02-16 [長年日記]

[解決済][Java] finallyでreturnしてはいけません。

構造を壊すので自然と避けていたのだが、ちょっとした検証のためにあえて finally に return を書いてみたら、呼び出し元のcatchブロックが実行されない、という現象がおきて、ちょっと意外だったのでメモ。まとめると、

同じコンテキストで try - catch - finally を書いた場合、 try - catch - finally の順に実行される。

呼び出し元コンテキストで try - catch を書き、呼び出される側コンテキストで try - finally を書いた場合、 try - finally - catch の順に実行される。このとき、finally に return があると、呼び出し元コンテキストの catch には遷移しない。

ツッコミより追記。JLSにちゃんと書いてある。

[未解決][Tomcat] Manager 経由で war をデプロイできない

イントラネットにある Tomcat(4.x) に対して、manager経由でデプロイしようとすると、

Server returned HTTP response code: 503 for URL: http://java.sun.com/dtd/web-app_2_3.dtd が発生しました

というエラーが発生する。ううむ困った。ftpとか使うしかないのか?

本日のツッコミ(全2件) [ツッコミを入れる]
unibon (2004-02-18 18:36)

おじゃまします。以前に finally での return でハマりました。自分が書いた部分ではなかったのですが、デバッグに付き合わされました(笑)。コンパイル時に警告してくれても良いと思います。その時は http://java-house.jp/ml/archive/j-h-b/049757.html を見てはじめてそういう仕様だと知りました。

matobaa (2004-02-20 02:30)

ちゃんとJLSに書いてあるんですね……追記させていだたきました。ありがとうございます。


«前の日記(2004-02-15) 最新 次の日記(2004-02-18)»