引发异常时Catch Block的行为

Pra*_*ith 2 .net c# exception-handling

是否有任何情况下,当引发异常时跳过catch块

try 
{
  some code
}
catch(Exception ex)
{
  some code
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Exception类,因为它捕获所有异常.

Mar*_*ell 10

您可能遇到问题StackOverflowException(请参阅.NET中无法捕获的异常列表)

还有另一类案例,特别是当抛出的东西不是a时Exception,但这只是你在1.1中,或者没有启用自动异常包装(默认情况下从2.0启用) - 理论上C++可以抛出任何东西(不只是一个Exception),所以如果你的"某些代码"调用某些抛出的C++ string,那么理论上你可能会错过它.

实际上,这很少(如果有的话)是一个真正的问题:

  • 默认情况下启用自动换行
  • 与.NET交谈的大多数C++代码都会Exception(或子类)表现良好

在这种情况下,一个人catch { ... }会努力拦截扔掉的东西,但不会告诉你发生了什么.