是否有任何关于在大型软件中每个源代码行有多少catch语句的规则?例如,在用C#编写的软件中,Visual Studio显示了大约350行包含单词“catch”的行,并且cloc报告说我们有大约160k SLOC,30k注释行和15k空白行。每个捕获语句160k/350大约是467行代码。良好的捕获语句与代码行之间的比率
但是,由于我们使用标准的C#格式化,并在它们自己的行上使用了大括号,所以谁知道160k中有多少行只是单个括号,而160k正在计算一些文件树不再编译到应用程序等等。我可能猜测“有用”比率接近每400 LOC的1个捕获量。
至少不出乎意料,我们错过了一个半关键的异常,它被捕获到一个空的catch块中,所以现在我正在通过代码库并至少打印出调试控制台的异常作为一种临时措施,或者在抓到的例外方面变得更具体。这当然会增加我们在整个应用程序中的捕获次数,但是它会使我们更接近“可接受”区域吗?我不知道每467 LOC的1次捕获是好还是好,甚至是可怕的。
我很了解 为什么不使用空的catch块。其他/以前的维护者一直很懒。而且由于这个产品的下一个版本对时间要求很高,所以我现在没有时间进入并正确地修复所有300(?)糟糕的捕获声明并验证软件的正确运行(当然,我们几乎没有自动化测试使这更容易:/)。
我只是在寻找是否有任何一种“直觉”,以至于应该多频繁地看一次try-catches。有几个答案说这是上下文敏感的,这是我所怀疑的,但不确定的。
空试块本身并不是一个坏主意(即它们可以正确使用)。只有主程序员滥用它们,他们应该真正记录错误并提供用户反馈。 – Noldorin 2009-08-05 16:53:15
查看基于此的另一个问题,处理空try-catch块:[为什么空catch块是个坏主意?](http://stackoverflow.com/questions/1234343/why-are-empty-catch-blocks- A-坏主意)。 – Lode 2011-08-10 09:32:52
不赞同Noldorin,并会建议空的catch块总是错的。如果您确实想要完全忽略某种类型的问题,请以某种方式限定捕获量,以便仅忽略您期望的错误类型。方法:catch(VerySpecificExceptionType ex){} >>或<< catch(Exception ex){if(ex.Message!=“我期望的东西”)throw; } >> 我打开反例,空的catch块可能没问题,但我很怀疑:) – pettys 2011-09-16 16:37:19