例外がスローされた場合に例外をキャッチする必要があるが、何もしないという状況に遭遇することがあります。つまり、例外が発生する可能性がありますが、発生しても問題ありません。
私は最近、同様のことについてこの記事を読みました: http://c2.com/cgi/wiki?EmptyCatchClause
この人は、
// should never occur
はコードの臭いであり、コードに表示されるべきではありません。次に、コメントがどのように表示されるかを説明します。
// don't care if it happens
はまったく異なり、私自身もこのような状況に遭遇します。たとえば、電子メールを送信するときは、次のようにします。
var addressCollection = new MailAddressCollection();
foreach (string address in addresses)
{
try
{
addressCollection.Add(address);
}
catch (Exception)
{
// Do nothing - if an invalid email occurs continue and try to add the rest
}
}
ここで、ユーザーに戻って 1 つ以上のメッセージを受信者に送信できなかったことを説明したいので、これを行うのは悪い考えだと思うかもしれません。しかし、それが単なる CC アドレスの場合はどうでしょうか? それはそれほど重要ではなく、たとえそれらのアドレスの 1 つが無効であったとしても (単にタイプミスの可能性があります)、とにかくメッセージを送信したい場合があります。
だから私は空のキャッチブロックを使用するのが正しいですか、それとも私が知らないより良い代替手段はありますか?