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的)

posted @ 2012-05-20 09:26  诸葛风流  阅读(310)  评论(0编辑  收藏  举报