列出方法可能抛出的所有异常

时间:2010-04-06 12:48:28

标签: .net visual-studio exception-handling static-analysis checked-exceptions

我知道Java强制程序员列出该方法将抛出的所有异常,从而创建一种简单的方法来列出代码用户可能抛出的所有异常。

另一方面,

.NET没有这样的功能,我们剩下的就是API文档或XML文档,其中有时列出了例外。

是否有VS的插件显示任何给定调用可能抛出的异常?鉴于反射的强大功能,不应该通过调用查看,并通过调用查看可能的所有分支并检查是否抛出任何.NET异常?

2 个答案:

答案 0 :(得分:8)

我所知道的唯一工具是(商业)Exception Hunter from red-gate software

但是,它并不像你先想到的那样具有确定性。根据所使用的其他程序集的版本,如果使用的新版本在构建时抛出了除预期之外的其他异常,则抛出的异常可能会在构建时间后发生变化。

在Java中,您有“特殊”的RuntimeException,它不必在方法签名中声明(包括从中降序的所有异常)。语言设计者选择不在C#中实现已检查的异常是有正当理由的(无论它们是否超过优势都是值得商榷的)。一些Java开发人员只是在运行时异常中包装异常,或者他们忘记使用导致信息丢失的“原因”异常。

关于已检查的异常有一个很好的interview with Anders Hejlsberg以及有关为什么C#没有它们的一些推理 - 感谢adrianbanks的链接。

答案 1 :(得分:2)

我遇到的唯一问题是Exception Hunter,但这是一个商业工具,您必须购买。