SSブログ

とあるソフト会社の開発手法(コーディングスタイル):第8話 [戯言]

- 目次 -

第8話 「例外のキャッチ」

try {
    func();
} catch (X x) {
    // funcで例外が発生した場合の処理
}

これだけなら、何の変哲もない普通のコードです。
精々「例外は参照で捕捉しようね~」ってくらいです。

問題は、関数func()が投げる例外の型が Y だってこと。
例外が発生してもキャッチされずにアプリケーションが終了してしまいます。

そして、更に問題なのが、「funcが投げる例外は X じゃなくて Y だ」と指摘してから1ヶ月以上経過しているのに、未だに修正されていないこと。
と言うか、何がどう違うのか、何が悪いのかを全く理解してくれません。
1ヶ月以上経過しているのに。

だ~か~ら~、XY に書き換えるだけだってば。意味が解らなければ、解らなくて良いから、手だけ動かして!締め切り、来週だから!(諸々の理由により、勝手に修正することが許されていません)

ちなみに、上のコードでfunc()となっているのは、某有名ライブラリが提供している関数です。なので、投げる例外の型についての情報は、付属のドキュメントを始め、WWW上にも山ほどあるのです。

「でも、これでちゃんと例外の捕捉が出来たんだが」

「え?この関数で例外が発生するのって非常に稀だよ。ハード的に壊れているくらいしか発生しないはずじゃ」

「だから、ダミーのコードを埋め込んで確認したんだよ」

try {
    func();

// ========================================
// ========================================
// ========================================
// テスト用コード(最終的に削除する)
    throw X();
// ========================================
// ========================================
// ========================================

} catch (X x) {
    // funcで例外が発生した場合の処理
}

だから、ちゃんとドキュメントを読んでください。func()が投げるのは Y です。

これで例外の捕捉が出来ないのは、コンパイラが腐っている場合だけです。

- 目次 -

[新幹線] 今日の一冊
チョコレート・アンダーグラウンド

チョコレート・アンダーグラウンド

  • 作者: アレックス シアラー
  • 出版社/メーカー: 求龍堂
  • 発売日: 2004/05
  • メディア: 単行本

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。