哇,我刚从外包开发人员那里拿回了一个C#的大项目,在进行我的代码审查时,我的分析工具揭示了它被认为是坏东西的一堆.其中一个令人沮丧的消息是:
Exceptions.DontSwallowErrorsCatchingNonspecificExceptionsRule : 2106 defects
Run Code Online (Sandbox Code Playgroud)
开发人员向我保证他们有充分的理由使用所有空的catch块,有时候使用空catch块的尝试只是忽略无用的异常并使应用程序不会崩溃.我觉得这是一个警察和完整的BS.我实际查找的一些示例是数据库调用,其中记录被保存到数据库,在这种情况下,如果忽略异常,用户将返回一个正常的提示,认为一切正常,并继续他们的工作.实际上,他们的工作从未得到保存.我认为这绝对是最可怕的错误.在这种情况下,在使用空catch块的try中抛出该代码是完全错误的.但我的问题是,"这种情况在任何情况下都可以接受吗?" 我想不是,但我知道错了.
这不是'如何抓住所有例外',而是'你应该抓住所有例外'吗?在C#.NET中,我注意到了大量的异常.是否可以计划捕获每个例外?
例如,DirectoryInfo()构造函数抛出4个异常.我应该计划捕捉这些还是只抓住我能处理的那些?也许让其他人冒泡到Main()我所有的地方,然后告诉用户有一个未捕获的异常.在所有这些可能的例外情况下,您的代码可能会变得比实际代码更多的异常处理.