【发布时间】:2010-03-04 21:15:46
【问题描述】:
作为一名优秀的程序员和代码审查员,当我看到开发人员捕获“异常”时,我总是畏缩不前。我本来打算建议 C# 添加 Java 中的“throws”子句,但在阅读了 Anders Hejlsberg 采访 (http://www.artima.com/intv/handcuffs.html) 之后,我明白为什么它不存在了。
相反,我想建议 canthrow 声明。 canthrow 语句将具有以下属性
- canthrow 语句将在方法上声明并列出该方法抛出的异常。
- canthrow 将向调用方法报告或智能感知可以抛出的异常,以及被调用方法可能抛出但未在本地处理的任何异常。
- canthrow 不是契约性的,所以版本控制不是问题。
这里的想法是大多数开发人员都希望捕获和处理适当的异常,但他们根本不知道它们是什么。如果我们有办法在设计时检查方法,开发人员将更有可能添加和处理相关的异常,并让未处理的异常冒泡。
现在作为最后的想法,您可能会说这一切都可以通过 Intellisense 使用反射来完成,但这会返回所有可能的异常。 canthrow 将允许库开发人员强调调用者应该处理的异常。
你怎么看?
【问题讨论】:
标签: c# java language-features