CSE(Corrupted State Exceptions) 严重异常处理办法

摘要:
微软认为,抓捕是不负责任的。程序员应根据严重性类别决定是否继续执行程序。然而,事实是,渔获量无处不在。出现异常后,程序继续顽强地执行,然后内存报告错误,系统报告错误,出现蓝屏,用户说“中断系统”。解决方案是在配置文件中添加节点:legacycorruptedStateExceptions Policy告诉程序存在程序吸收的严重异常,更不用说其他异常了。另一种方法是将[HandleProcessCorrupted StateException属性]添加到方法中。命名空间System.Runtime。需要引入ExceptionServices。[HandleProcessCorruptedStateExceptionsAttribute]publicvoidShowMessage{//….}但尝试后没有成功。

原因分析

出现这个问题说明.NET版本至少是4.0,因为微软在.NET 4.0版本中更改了异常处理机制。微软认为catch(Exception)这种写法是不负责任的,程序员应该按照异常严重类别决定程序是否继续执行。然而事实是catch(Exception)遍地开花,程序出现异常后继续顽强地执行,然后内存报错,系统报错,蓝屏,用户来一句"破系统"。现在微软不想为咱程序员背黑锅了,有严重异常catch不到,直接抛出错误呈现给用户。

解决方案

在配置文件中添加节点:(这个方案是全局性的,个人推荐)

<configuration>
   <runtime>
      <legacyCorruptedStateExceptionsPolicy enabled="true" />
   </runtime>
</configuration> 
  legacyCorruptedStateExceptionsPolicy就是在告诉程序,有严重异常程序内部吸收,其他就别管了。
另外还有个办法是在方法上添加[HandleProcessCorruptedStateExceptionsAttribute]属性,需要引入命名空间System.Runtime.ExceptionServices。
 [HandleProcessCorruptedStateExceptionsAttribute]
public void ShowMessage(string msg)
{
//....
}

不过试了没效果,囧。有哪位大神能告知下原因啊?

参考文章:.NET 4.0新特性-- Corrupted State Exceptions

免责声明:文章转载自《CSE(Corrupted State Exceptions) 严重异常处理办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jmeter测试webservice接口用Delphi进行word开发下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WF Workflow 状态机工作流 开发

概述 工作流是对业务流程的建模,当我们设计工作流的时候,我们首先要分析业务处理过程中要经历的步骤。然后,我们就可以利用WF创建工作流模型来模拟业务的处理过程。 我们知道,WF包含两种类型的工作流:顺序工作流和状态机工作流。顺序工作流提供了一系列有组织的步骤,一般情况下,步骤是逐一执行的。可能有的步骤需要等待某些事件的发生才可以继续执行,但通常情况下顺序工作...

关于启动Docker容器的错误:OCI runtime create failed: container with id exists

环境 系统:centos7.6 Docker:20.10.7 症状 在执行如下启动命令后docker start mysqlserver出现了一下异常报错 1 docker start mysqlserver 2 Error response from daemon: OCI runtime create failed: container with id...

[转]Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误-高级

from : https://levy.at/blog/11 进阶篇 关闭HTTP的响应 level: intermediate 当你使用标准http库发起请求时,你得到一个http的响应变量。如果你不读取响应主体,你依旧需要关闭它。注意对于空的响应你也一定要这么做。对于新的Go开发者而言,这个很容易就会忘掉。 一些新的Go开发者确实尝试关闭响应主体,但...

JAVA异常处理

  图片来自网络 异常类体系   Error 一般指虚拟机相关错误,是程序无法处理的,如OutOfMemoryError、ThreadDeath、系统崩溃等。这种错误由JVM来处理,不可能捕获也无法恢复,JVM在大多数情况下会选择终止线程导致程序中断。   Exception 程序可以捕获处理的异常。分为两种:CheckedException,Un...

.Net中的异常处理:高级异常

这种处理的有效性主要取决于所选择的语言和平台,因此,详细了解它们的正确用法和行为非常重要,这样我们的用户和其他开发人员在诊断代码中的问题时免受痛苦。在本文中,我们将了解C和.NET在错误处理方面的作用。 词汇表CLR:公共语言运行时的缩写,是.NET运行时,它负责执行用所有.NET语言编译的应用程序。除了虚拟机和实时编译器之外,它还具有额外的职责,如内存管...

【从零开始学SpringMVC笔记】SpringMVC进阶

@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则。 URL路径映射 @RequestMapping(value="item")或@RequestMapping("/item") value的值是数组,可以将多个url映射到同一个方法 @RequestMapping(value = { "itemList",...