C# 捕获非托管异常

互联网 2021/10/14 11:14:12

在.NET 4.0之后,CLR将会区别出一些异常(都是SEH异常),将这些异常标识为破坏性异常(Corrupted State Exception)。针对这些异常,CLR的catch块不会捕捉这些异常。SEH异常通常是非托管代码抛出的。例如:调用c和c++的lib和dll库,都是非托管的。解决方法有两种: 1、在…

在.NET 4.0之后,CLR将会区别出一些异常(都是SEH异常),将这些异常标识为破坏性异常(Corrupted State Exception)。针对这些异常,CLR的catch块不会捕捉这些异常。SEH异常通常是非托管代码抛出的。例如:调用c和c++的lib和dll库,都是非托管的。解决方法有两种:

1、在托管程序的.config文件里,启用legacyCorruptedStateExceptionsPolicy这个属性,即简化的.config文件类似下面的文件:

<?xml version="1.0"?>
<configuration>
 <startup>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
 </startup>
    <runtime>
      <legacyCorruptedStateExceptionsPolicy enabled="true" />
    </runtime>
</configuration>

2、在需要捕捉破坏性异常的函数外面加一个HandleProcessCorruptedStateExceptions属性,这个属性只控制一个函数,对托管程序的其他函数没有影响

[HandleProcessCorruptedStateExceptions]
 void function()
 {
     try
     {
     }
     catch (Exception e)
     {
     }
 }
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[C# 捕获非托管异常]http://www.zyiz.net/tech/detail-241268.html

上一篇:ASP.NET Core Filter与IOC的羁绊

下一篇:【实训Day03】C#知识点复习

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>
扫一扫关注最新编程教程