とあるソフト会社の開発手法(コーディングスタイル):第8話 [戯言]
【- 目次 -】
第8話 「例外のキャッチ」
try { func(); } catch (X x) { // funcで例外が発生した場合の処理 }
これだけなら、何の変哲もない普通のコードです。
精々「例外は参照で捕捉しようね~」ってくらいです。
問題は、関数func()
が投げる例外の型が Y
だってこと。
例外が発生してもキャッチされずにアプリケーションが終了してしまいます。
そして、更に問題なのが、「funcが投げる例外は X
じゃなくて Y
だ」と指摘してから1ヶ月以上経過しているのに、未だに修正されていないこと。
と言うか、何がどう違うのか、何が悪いのかを全く理解してくれません。
1ヶ月以上経過しているのに。
だ~か~ら~、X
を Y
に書き換えるだけだってば。意味が解らなければ、解らなくて良いから、手だけ動かして!締め切り、来週だから!(諸々の理由により、勝手に修正することが許されていません)
ちなみに、上のコードでfunc()
となっているのは、某有名ライブラリが提供している関数です。なので、投げる例外の型についての情報は、付属のドキュメントを始め、WWW上にも山ほどあるのです。
「でも、これでちゃんと例外の捕捉が出来たんだが」
「え?この関数で例外が発生するのって非常に稀だよ。ハード的に壊れているくらいしか発生しないはずじゃ」
「だから、ダミーのコードを埋め込んで確認したんだよ」
try { func(); // ======================================== // ======================================== // ======================================== // テスト用コード(最終的に削除する) throw X(); // ======================================== // ======================================== // ======================================== } catch (X x) { // funcで例外が発生した場合の処理 }
だから、ちゃんとドキュメントを読んでください。func()
が投げるのは
Y
です。
これで例外の捕捉が出来ないのは、コンパイラが腐っている場合だけです。
【- 目次 -】
今日の一冊 | |
|
タグ:伝説のプログラマたち
2009-04-30 09:16
nice!(0)
コメント(0)
トラックバック(0)
コメント 0