然而并不是所有人都想要这个新的异常机制,如果你的程序是在4.0下面编译并运行,而你又想在.NET程序里捕捉到SEH异常的话,有两个方案可以尝试:
1. 在托管程序的.config文件里,启用legacyCorruptedStateExceptionsPolicy这个属性,即简化的.config文件类似下面的文件:
App.config:
<?xml version="1.0"?> |
这个设置告诉CLR 4.0,整个.NET程序都要使用老的异常捕捉机制。
2. 在需要捕捉破坏性异常的函数外面加一个HandleProcessCorruptedStateExceptions属性,这个属性只控制一个函数,对托管程序的其他函数没有影响,例如:
using System.Runtime.ExceptionServices; |
你也可以下载示例代码自己试一下(需要VS 2010才能编译):
lion