如何判断.NET调用引发的异常?

Nic*_*sen 1 .net c# exception-handling try-catch

如果有一个代码:

data.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

(数据是ObjectContext)

MSDN文档列出了OptimisticConcurrencyException为抛出.这很好但我知道UpdateException也可以抛出(也可能是其他人).我怎么知道方法可以抛出哪些异常?

我不想抓住,Exception因为我只想捕捉我知道我能以某种方式处理的异常.这通常是说 - 不仅仅是上面的例子.必须有一些方法可以知道"内置".NET方法抛出的异常.

SLa*_*aks 5

这不是一种"原生"方法; 这是一种普通的方法,碰巧是由微软而不是你写的.
实际的本机方法不能抛出托管异常(尽管COM互操作会将事物转换为托管异常)

与Java不同,C#没有异常规范,因此没有固有的方法可以知道方法会抛出什么异常.

您唯一的选择是文档或反编译器.