异常AccessViolationException
在.NET 4.0中引入了一个新功能:Corrupted State Exceptions。听上去名字很神秘,实际上这个功能主要是限制对Exception的错误用法:捕获AccessViolationException/SEHException等可能会造成程序状态错误而无法正确继续的种种异常,具体可以参看CLR程序经理Andrew Pardoe的这篇MSDN文章:http://msdn.microsoft.com/en-us/magazine/dd419661.aspx
参考:.NET 4.0里异常处理的新机制
在.NET 4.0之后,CLR将会区别出一些异常(都是SEH异常),将这些异常标识为破坏性异常(Corrupted State Exception)。针对这些异常,CLR的catch块不会捕捉这些异常,即使你用类似下面的代码:
try { TestMethod(); } catch (Exception e) { Console.WriteLine("Catching exception: {0}", e); }
也没有办法捕捉到这些异常。