找出一个方法可能抛出的exceptionC#
有没有什么办法来找出在.NET代码中的任何方法可能抛出什么exception? 理想情况下,我想看看可能会抛出什么,并select我想处理的是哪些。 我想我想要从java中的throws子句得到的信息。
情况是我正在从networking上的xml文档做一个linq查询,并想知道什么可能出错。 我可以在reflection器中打开assembly体,看看,但我认为可能有一个更简单的方法。
.NET没有强制(“检查”)exception,如Java。 如果开发人员添加了/// <exception.../>
块,intellisense 可能会显示此信息,但是最终可能会发生比您预期的更多的exception( OutOfMemoryException
, ThreadAbortException
, TypeLoadException
可能发生相当不可预测的情况)。
一般来说,你应该知道哪些事情可能会出错,哪些事情可以做一些有用的事情。 在大多数情况下,正确的行为是让exception冒泡(只需运行任何“finally”代码释放资源)。
Eric Lippert在这方面有一个很好的博客。
我认为, exception猎人可以提供这种信息,但它花钱…
在阅读另一篇有关StackOverflow的文章之后,我在其他答案的基础上编写了一个工具来完成这个任务,你可以从这里获得GitHub的源代码:
exceptionreflection器
你也可以在这里阅读更多:
只要你使用BCL类,它们都被完全logging下来,因此Intellisense会显示一个方法可能抛出的exception。 除此之外(并阅读文档),我认为没有办法。