有时我会遇到需要捕获异常但从不对其进行任何处理的情况。换句话说,可能会发生异常,但是否发生并不重要。
我最近读了一篇关于类似事情的文章: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
}
}
现在,您可能认为这样做是一个坏主意,因为您希望返回给用户并解释无法将一条或多条消息发送给收件人。但是如果它只是一个抄送地址呢?这不太重要,即使其中一个地址无效(可能只是错字),您仍可能仍想发送消息。
那么我使用空的 catch 块是正确的,还是有更好的选择,我不知道?