.net - 如何找出.NET函数可能引发的异常?

标签 .net exception reference

我可能会遗漏一些明显的东西,但是在某处是否存在有关.NET中的函数引发哪些异常以及为什么可能引发异常的引用?

举例来说,我最近在Visual C#2008中试用了Linq,并将XML文件加载到XDocument中。只有通过测试,我才意识到,如果您尝试加载不存在的文件,它将抛出FileNotFound异常,但是如果您尝试加载目录而不是文件,则会得到UnauthorizedAccessException。还在System.IO命名空间中查看,我可以看到诸如FileLoad异常和PathTooLongException之类的东西,并且我可以猜测何时可能抛出它们,但在某些情况下可能还抛出了一些我尚未想到的东西。

我目前唯一的解决方案就是捕获我所知道的异常,然后捕获Exception类型,但是我希望能够确切地知道我最有可能遇到的异常类型以及原因。我本以为MSDN库将具有此类信息,但我在任何地方都找不到。我只是瞎了吗?此信息是否在其他地方?

编辑:更多详细信息,现在我正在寻找XDocument.Load(string)函数可能引发的异常。看来online documentation或对象浏览器中没有任何相关内容。我现在是否只需要运行一些测试并查看运行的内容?

最佳答案

好问题,您的视野是20/20。 C#/。NET没有实现throws语句(即,已检查的异常)。

任何来自Java之类的语言的人都可能对此感到奇怪。

C#的父亲Anders Hejlsberg解释了在this article/interview中将检查的异常排除在C#之外的原因。这是一本好书。

从那篇文章中,安德斯说:

The concern I have about checked exceptions is the handcuffs they put on programmers. You see programmers picking up new APIs that have all these throws clauses, and then you see how convoluted their code gets, and you realize the checked exceptions aren't helping them any. It is sort of these dictatorial API designers telling you how to do your exception handling. They should not be doing that.



因此,正如Mitch和Monoxide所说,.NET FCL的MSDN文档列出了与每个类相关的异常,以及在每个命名空间中可能出现的异常。

关于.net - 如何找出.NET函数可能引发的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194995/

相关文章:

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

android - 使用服务下载时发生 InstantiationException

c++ - 为什么 *&x 与 x 不同?

c++ - 需要帮助创建数组并在另一个函数中编辑它并将其发送回初始函数

javascript - 从成员函数对对象所做的更改不会持续存在。范围/引用问题?

c# - 当 WinForms 应用程序从运行模式切换到设计模式时,我应该处理什么事件来执行代码

python - 类型错误 : Python thinks that I passed a function 2 arguments but I only passed it 1

.net - 在全局Application_Error中清除 session

.net - TFS 项目可以相互引用吗?

.net - 分配给 Excel.Application.ActivePrinter 时出现 COMException