我可能会遗漏一些明显的东西,但是有一个关于.NET中的函数抛出什么异常以及为什么抛出异常的参考?
作为一个例子,我最近在Visual C#2008中尝试了Linq,我正在将XML文件加载到XDocument中.只是通过测试我才意识到,如果你尝试加载一个不存在的文件,它将抛出一个FileNotFound异常,但如果你试图加载一个目录而不是一个文件,你将得到一个UnauthorizedAccessException.另外通过System.IO命名空间查看我可以看到像FileLoad异常和PathTooLongException之类的东西,我可以猜测它们什么时候可能被抛出但是可能会有其他人在某些情况下可能会抛出我还没有想到的.
我现在唯一的解决方案就是抓住我所知道的那些然后捕获Exception类型,但我宁愿能够确切地知道我最有可能遇到哪些类型的异常以及为什么.我原本以为MSDN库会有这种类型的信息,但我无法在任何地方找到它.我只是瞎了吗?这个信息在其他地方吗?
编辑:一些更具体的,现在我正在寻找可能由XDocument.Load(字符串)函数抛出的异常.看起来在线文档或对象浏览器中没有任何相关内容.我现在必须运行一些测试,看看我跑进去了吗?
不错的问题,你有20/20的愿景.C#/ .NET没有实现throws语句(即,检查异常).
任何来自Java等语言的人都可能会对此感到好奇.
C#的父亲Anders Hejlsberg在本文/访谈中解释了将检查异常从C#中删除的理由.这是一个很好的阅读.
从那篇文章中,安德斯说:
我对检查异常的担忧是它们给程序员带来的手铐.您会看到程序员选择具有所有这些抛出子句的新API,然后您会看到他们的代码有多复杂,并且您意识到已检查的异常并没有帮助他们.这些独裁的API设计师会告诉您如何进行异常处理.他们不应该这样做.
因此,正如Mitch和一氧化物所说,.NET FCL的MSDN文档列出了与每个类相关的异常以及每个命名空间内可能的异常.