C#明确定义了抛出的exception

在Java中,您使用“throws”关键字明确定义了抛出的exception。 这样,任何调用你的方法的人都知道要抓到什么。

C#中有什么东西吗? 如果没有,我如何知道要捕获的exception,或者如何让其他人知道要捕获的exception?

另外,如果我正在定义一个接口,有没有办法说“methodX()应该在出错时抛出此exception”?

在C#中没有任何等价物: Checked Exceptions的麻烦

除了文档之外,没有办法声明接口说“methodX()应该在出错时抛出此exception”。

C#/ .net没有检查exception,事实certificate它们在大规模系统中的用处不如最初的想法。 在许多项目中,维护检查exception规范的时间远远大于通过使用它们节省的调试时间。

Checked Exceptions似乎是一个很好的理想,除非你有方法可以将委托或调用带入你传入的对象。举一个简单的例子,列表上的Sort()方法不知道它会抛出什么exception,因为它不会知道正在排序的对象的Compar()方法会抛出什么exception。

因此,方法可能抛出的exception的规范必须能够包含有关如何通过对象和委托传递exception的信息。 没人知道怎么做!

但是,有一些工具可以检查是否捕获了所有exception – 请参阅Red Gate的Exception Hunter 。 我个人认为这些工具没有多大价值,但是如果你喜欢检查exception,你会发现它们很有用。

此function在C#中不可用。 您可以制作正确的XML文档(3个斜杠///)并说明抛出的exception。

这将由IntelliSense机制选取,并在使用之前对类/方法的用户可见。

C#不支持此function。 (不管怎样我都不知道)。 您可以做的是使用Xml注释,以便在调用方法时,这些数据将由intellisense显示。

据我所知,在C#中没有throws声明,你可以记录你的方法,表明它抛出exception但没有强制error handling。

C#不支持已检查的exception。 语言设计者会以java使用它们的方式考虑检查exception。

一些解决方法