有时候我会遇到需要捕获异常但从不处理的情况。换句话说,异常可能会发生,但它并不重要。
我最近读了一篇关于类似事情的文章:http://c2.com/cgi/wiki?EmptyCatchClause
这个人谈到了如何使用空catch子句的注释:
// 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块是正确的吗?还是有更好的选择,我不知道?
Exception
与CC地址有关,而不是例如内存不足的情况?你打算如何从中恢复? - Zdeslav Vojkovic