Я иногда сталкиваюсь с ситуациями, когда мне нужно поймать исключение, если оно когда-либо бросается, но никогда с ним ничего не делать. Другими словами, может возникнуть исключение, но это не имеет значения, если это произойдет.
Недавно я прочитал эту статью о подобной вещи: 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
}
}
Теперь вы можете подумать, что это плохая идея, так как вы хотите вернуться к пользователю и объяснить, что одно или несколько сообщений не могут быть отправлены получателю. Но что, если это просто адрес CC? Это менее важно, и вы все равно можете отправить сообщение в любом случае, даже если один из этих адресов недействителен (возможно, только опечатка).
Я правильно использую пустой блок catch или есть лучшая альтернатива, о которой я не знаю?