Catch 常规用法
1.StackOverFlowException (一般来说这个不是真的堆栈不够了,而是你的代码出现了无线递归),如果你用throw new StackOverFlowException 还是可以catch的
2.OutOfMemoryException (好像只有 box newarr newobj 才会抛出这个异常)
3.非CLS的异常(一般来源于本地代码,这些异常不继承于System.Exception)
在.net framework 4.0中默认行为不捕获非CLS的异常
在.net framework 2.0中会把非CLS的异常包装为System.Exception的之类(可以catch)
代码
AppDomain.CurrentDomain.FirstChanceException += new EventHandler<FirstChanceExceptionEventArgs>(CurrentDomain_FirstChanceException);
try
{
throw new Exception("test");
}
catch
{
}
return;
除了几种保留类型以外,其他异常都触发这个事件(某些异常是没法catch的)