C#不能捕捉的异常,如AccessViolationException
在.net的异常机制中,有部分严重的编程错误(系统的某些Corrupted State Exceptions异常)是默认不被用户使用常规的异常捕捉方式捕捉到的。
微软的这种设计方式,是让用户必须处理该异常,否则程序将无法正常运行。目前发现两种情况,但解决方法通用。
1、AccessViolationException异常
AccessViolationException:当代码尝试读取或写入尚未分配或无法访问的内存时,非托管或不安全代码中会发生访问冲突。其只在可验证托管代码与非托管代码或不安全的托管代码交互出现。如果异常发生在公共语言运行库保留的内存之外,则公共语言运行库抛出的AccessViolationException异常不会由catch
结构化异常处理程序中的语句处理,需要在方法前添加HandleProcessCorruptedStateExceptionsAttribute特性。
2、属性的get中调用栈的东西
如果属性的get方法中使用了调用栈的东西,可能会出现调用栈异常,最好变成方法(在编程建议中,get和set中不应该进行复杂的逻辑判断)。
如获得时间间隔的属性:
private long startRecordTime;
public double RecordInterval
{
get
{
double interval = ;
try
{
long tick = DateTime.Now.Ticks;
if (startRecordTime <= )
{
startRecordTime = DateTime.Now.Ticks;
}
interval = TimeSpan.FromTicks(tick - startRecordTime).TotalSeconds;
}
catch (Exception ex)
{
interval = ;
}
return interval;
}
}
在调用属性时,序列化可能会出现:“Cannot evaluate expression because a native frame is on the top of the call stack”问题。该异常与AccessViolationException类似,无法使用常规的try…catch捕捉到。
C#不能捕捉的异常,如AccessViolationException的更多相关文章
- Python 捕捉traceback异常栈信息
捕捉traceback异常栈信息 by:授客 QQ:1033553122 相关函数简介 sys.exc_info() 返回包含3个元素(type, value, traceback)的元组,提供关 ...
- C# 异常处理最佳实践,解决代码分析提示CA1031:不要捕捉一般异常类型的解决办法
异常类型 异常一般分为系统异常 和 应用异常.系统异常有无法连接数据库,而应用异常是业务逻辑异常,比如授权失败. 在 C# 中异常基于 System.Exception,派生出 System.Syst ...
- 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常
在综合统计SDK(欧盟统计局的朋友,百度统计)之后.有一个非常有利的功能测试:错误分析.此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品.多功 ...
- WPF 捕捉全局异常
public App() { //首先注册开始和退出事件 this.Startup += new StartupEventHandler(App_Startup); this.Exit += new ...
- [四]SpringBoot 之 捕捉全局异常
在class注解上@ControllerAdvice, 在方法上注解上@ExceptionHandler(value = Exception.class),具体代码如下: package me.shi ...
- python捕捉详细异常堆栈的方法
python中有 try——except 的方法捕获异常,可以获取到异常的种类以及自定义异常, 但是有时候对于debug测试来说,信息不全,比如说 触发异常的具体位置在哪: import traceb ...
- winform捕捉全局异常
/// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { try { //设置应 ...
- delphi 捕捉全局异常错误的方法
private { Private declarations } public procedure GlobalExceptionHandler(Sender: TObject; E: ...
- 在Main方法中设置异常的最后一次捕捉
在做Winfrom程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...
随机推荐
- bom知识点
1.BOM输出 所谓BOM指的是浏览器对象模型 Browser Object Model,它的核心就是浏览器 alert(1);//弹出框 调式使用 console.log('路飞学城');//用于浏 ...
- 总结开发中使用到的npm 库
1.Swiper https://github.com/nolimits4web/Swiper 移动端slides插件 2.fetch https://github.com/whatwg/fetch ...
- ubantu环境下fidder安装
转自:http://www.cnblogs.com/jcli/p/4474332.html Linux(Ubuntu)环境下使用Fiddler 自己的开发环境是Ubuntu, 对于很多优秀的软件但是又 ...
- Django学习---Form组件认证
Form组件认证 能够帮助我们做用户认证. 以前写我们自己写用户认证的时候,我们自己写HTML的form表单,点击提交,数据就被发送到后台,后台进行验证.在验证过程中我们就需要自己去写正则表达式去匹配 ...
- AnyConnect removes "Connections" tab from IE Settings solution
I have an ASA 5510 that we use for SSL VPN Client access. The ASA distributes the AnyConnect (v2.4. ...
- 【转】关于BeanUtils.copyProperties的用法和优缺点
一.简介: BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对JavaBean的属性进行处理.我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对Jav ...
- 《集体智慧编程》第7章代码 Python3执行出错
电子工业出版社,2015年第3版 P153,增加了buildtree函数后执行出错,报错为: ----------------------------------------------------- ...
- 关于ErrorPage
JSP里创建一个网页test.jsp, 让这个网页上面出现一个错误, 再创建一个切换页面error.jsp, 使test.jsp如果出现错误就切换到error.jsp上, 但是怎么试都是出现一个网页上 ...
- word2vec 细节解析1
count.extend(collections.Counter(list1).most_common(2))表示:使用collections.Counter统计list1列表重单词的频数,然后使用m ...
- js 滚动条滚动到底部触发事件
一.前言 在开发项目时,常常需要展示大量数据.如果全部显示出来,数据相对少时,看不出来什么不同,如果数据很多时,一次请求全部显示,这就相当可怕了. 面对这种问题,PC里使用了分页效果,将数据分成一页页 ...