私の職場は、コードベース全体に次のような構成要素が飛び散っているポケモン例外処理アンチパターンの悪いケースに悩まされています。
try {
...
} catch (Exception ex) {
// Log and pretend nothing happened.
Log.LogException(ex);
}
Stack Exchangeのサイトで、上記が悪い理由を説明する多くの回答を見つけました。しかし、上記のようなコードを書くべきではない理由を説明している本、開発者ジャーナル記事、msdnページなどのauthoritativeソースは見つかりませんでした。そのような情報源はありますか?
編集:「有名な」ブロガーも信頼できる情報源として数えると思います。権威あるものとみなされるものについての私のルールは、厳密に定められたものではありません。
C#では、 Framework Design Guidelines よりも信頼できるソースを要求することはできません。これは、.NETに付属するコアライブラリを設計するときに.NETベースクラスライブラリの作成者が従ったものです。 例外を処理する方法に関する包括的なガイドライン が含まれています。
特定 では、それは言う:
[〜#〜] avoid [〜#〜]
System.Exception
、System.SystemException
などの非特定の例外をキャッチしてエラーを飲み込むなど、アプリケーションコードで。
ジョン・スキートとエリック・リペルト。 .NETの世界で、より優れた頭脳を持つ人を見つけてください。 :)
私はここから始めます: エリック・リッパートによる厄介な例外
次に、例外のいずれかに関連するものを探します。また、Clean Codeブックのコメントに+1します。 クリーンコード by Robert Martin :)
これは、マイクロソフトのプリンシパルアーキテクトであるKrzysztof Cwalinaの記事です。それは6年前に書かれましたが、それでも、さまざまな例外の種類について何をすべきかを自分に思い出させるための私の頼りになるものです。
例外を3つのタイプに分類します。
記事にはたくさんの良い情報があります。