作为一名优秀的程序员和代码审查人员,当我看到开发人员发现“Exception”异常时,我总是感到不安。我打算建议C#在Java中添加“throws”子句,但在阅读Anders Hejlsberg访谈(http://www.artima.com/intv/handcuffs.html)之后,我明白了它为什么不在那里。我想建议canthrow声明。该canthrow声明将具有以下属性我们可以在C#中获得一个canthrow语句吗?
- canthrow声明将在方法声明,并列出了例外情况,这种方法抛出。
- canthrow会向调用方法或intellisense报告可抛出的异常,以及调用的方法可能抛出并且不在本地处理的任何异常。
- canthrow is not contractual,所以版本控制不是问题。
这里的想法是,大多数开发人员想要捕捉并处理适当的异常,但他们根本不知道它们是什么。如果我们有办法在设计时检查这些方法,开发人员将更有可能添加和处理相关的异常,并让未处理的异常出现。
现在作为最后的想法,您可能会说这可能都是通过Intellisense使用反射来完成的,但是这会返回所有可能的异常。图书馆的开发者可以强调预期由来电者处理的例外情况。
您认为如何?