And*_*Hin 26 c# interface exception
在Java中,您使用"throws"关键字明确定义了抛出的异常.这样,任何调用你的方法的人都知道要抓到什么.
C#中有什么东西吗?如果没有,我如何知道要捕获的异常,或者如何让其他人知道要捕获哪些异常?
另外,如果我正在定义一个接口,有没有办法说"methodX()应该在出错时抛出此异常"?
Mit*_*eat 34
在C#中没有任何等价物:Checked Exceptions的麻烦
除了文档之外,没有办法声明接口说"methodX()应该在出错时抛出此异常".
Ian*_*ose 12
C#/ .net没有检查异常,事实证明它们在大规模系统中的用处不如首先想象的那么多.在很多项目中,维护检查异常规范的时间远远大于通过使用它们节省的调试时间.
Checked Exceptions似乎是一个很好的理想,直到你有方法可以将委托或调用带入你传入的对象.举一个简单的例子,列表上的Sort()方法不知道它会抛出什么异常,因为它不会知道正在排序的对象的Compar()方法会抛出什么异常.
因此,方法可能抛出的异常的规范必须能够包含有关如何通过对象和委托传递异常的信息. 没人知道怎么做!
但是,有一些工具可以检查是否捕获了所有异常 - 请参阅Red Gate的异常猎人.我个人认为这些工具没有太多价值,但是如果你喜欢检查过的例外,你会发现它们很有用.