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程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...
随机推荐
- JMS消息模型
消息机制: 系统之间通信的中介,作为一台单独的服务器部署,大多数使用多个系统之间协作,是系统解耦的常见解决方案. 基于CS架构 作用:多个系统之间解耦,项目可以分开开发,满足显示的高可用(也可以说是异 ...
- yyblog2.0 数据库开发规范
一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)表字符集默认使用utf8,必要时候使用utf8mb4 解读:1. ...
- 解决Linux下MySQL登录ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor)问题
两种方案: 一: 1.修改mysql配置文件:vim /etc/my.cnf 2.找到[mysqld]下添加 skip-grant-tables 配置 3.重启服务service mysqld res ...
- uva-11234-表达式
后缀表达式,使用队列计算,要求计算的结果一样,输出队列的输入串 表达式转二叉树,层次序遍历,先右孩子,然后字符串反转输出 #include <iostream> #include < ...
- java日期公共类
package com.mall.common; import java.text.ParseException; import java.text.SimpleDateFormat; import ...
- 2017面向对象程序设计(Java)第十五周学习总结
上周,老师要求同学们自学应用程序部署,并布置了相关的实验任务.此次实验的目的是掌握Java应用程序的打包操作:了解应用程序存储配置信息的两种方法: 了解Applet小应用程序的开发及应用方法:掌握基于 ...
- mysql安装版卸载,解压版安装
卸载:https://blog.csdn.net/cxy_summer/article/details/70142322 解压版安装:https://blog.csdn.net/recky_wiers ...
- 判断viewpager左右滑动方向
实现思路就是通过viewpager的滑动监听,用参数position进行比较,同时当判断完这个要把比较的positon覆盖.这里简单介绍一下public void onPageScrolled(int ...
- oracle 基本函数小例子--查询身高段分数段
select * from student order by id drop table student select * from oracletest create table student( ...
- [SQL]查询数据库中具有某个字段名的表
SELECT t.name AS table_name, c.name AS column_name FROM XOIFundData.sys.tables AS t INNER JOIN XOIFu ...