2010-03-04 94 views
0

作为一名优秀的程序员和代码审查人员,当我看到开发人员发现“Exception”异常时,我总是感到不安。我打算建议C#在Java中添加“throws”子句,但在阅读Anders Hejlsberg访谈(http://www.artima.com/intv/handcuffs.html)之后,我明白了它为什么不在那里。我想建议canthrow声明。该canthrow声明将具有以下属性我们可以在C#中获得一个canthrow语句吗?

  1. canthrow声明将在方法声明,并列出了例外情况,这种方法抛出。
  2. canthrow会向调用方法或intellisense报告可抛出的异常,以及调用的方法可能抛出并且不在本地处理的任何异常。
  3. canthrow is not contractual,所以版本控制不是问题。

这里的想法是,大多数开发人员想要捕捉并处理适当的异常,但他们根本不知道它们是什么。如果我们有办法在设计时检查这些方法,开发人员将更有可能添加和处理相关的异常,并让未处理的异常出现。

现在作为最后的想法,您可能会说这可能都是通过Intellisense使用反射来完成的,但是这会返回所有可能的异常。图书馆的开发者可以强调预期由来电者处理的例外情况。

您认为如何?

回答

1

我不确定它在上面的文档中购买了什么,因为该方法通常不能保证不抛出其他异常。例如,考虑一个线程被中止的情况。

8

这已经在一定程度上以<exception> documentation comment tag的形式提供。通过使用类似FxCop introspection的调查树来深入挖掘将是可能的,但是一旦涉及虚拟方法,它可能会很快变得混乱。

至于编辑器集成,你可能会有更好的运气在Resharper中寻求这样的东西,而不是试图在Visual Studio中获得对它的支持。

相关问题