我正在尝试解析文档中出现的一些日期.看起来用户已经以类似但不精确的格式输入这些日期.
以下是格式:
9/09
9/2009
09/2009
9/1/2009
9-1-2009
Run Code Online (Sandbox Code Playgroud)
尝试解析所有这些问题的最佳方法是什么?这些似乎是最常见的,但我想是什么让我感到高兴的是,如果我有一个"M/yyyy"模式,那么总是会在"MM/yyyy"之前捕获我是否必须设置我的try/catch块嵌套在限制最少的限制性方式?似乎肯定会采取大量代码重复来实现这一目标.
我有时会遇到需要捕获异常的情况,如果它被抛出但从不对它做任何事情.换句话说,可能会发生异常,但如果发生异常则无关紧要.
我最近阅读了这篇关于类似内容的文章:http://c2.com/cgi/wiki?EmptyCatchClause
这个人谈论的评论如何
// should never occur
Run Code Online (Sandbox Code Playgroud)
是代码气味,不应该出现在代码中.然后他们去解释评论如何
// don't care if it happens
Run Code Online (Sandbox Code Playgroud)
完全不同,我自己遇到这样的情况.例如,在发送电子邮件时,我会执行与此类似的操作:
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
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可能认为这样做是个坏主意,因为您希望返回给用户并解释无法将一条或多条消息发送给收件人.但是,如果它只是一个CC地址怎么办?这不太重要,即使其中一个地址无效(可能只是一个错字),您仍然可能仍然希望发送消息.
所以我使用空挡块是对的还是有一个我不知道的更好的替代方案?