在.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的更多相关文章

  1. Python 捕捉traceback异常栈信息

    捕捉traceback异常栈信息   by:授客 QQ:1033553122 相关函数简介 sys.exc_info() 返回包含3个元素(type, value, traceback)的元组,提供关 ...

  2. C# 异常处理最佳实践,解决代码分析提示CA1031:不要捕捉一般异常类型的解决办法

    异常类型 异常一般分为系统异常 和 应用异常.系统异常有无法连接数据库,而应用异常是业务逻辑异常,比如授权失败. 在 C# 中异常基于 System.Exception,派生出 System.Syst ...

  3. 【Android】 -- 使用UncaughtExceptionHandler捕捉全局异常

    在综合统计SDK(欧盟统计局的朋友,百度统计)之后.有一个非常有利的功能测试:错误分析.此功能可以在程序的执行中遇到崩溃(runtimeException)反馈给server,帮助开发者提高产品.多功 ...

  4. WPF 捕捉全局异常

    public App() { //首先注册开始和退出事件 this.Startup += new StartupEventHandler(App_Startup); this.Exit += new ...

  5. [四]SpringBoot 之 捕捉全局异常

    在class注解上@ControllerAdvice, 在方法上注解上@ExceptionHandler(value = Exception.class),具体代码如下: package me.shi ...

  6. python捕捉详细异常堆栈的方法

    python中有 try——except 的方法捕获异常,可以获取到异常的种类以及自定义异常, 但是有时候对于debug测试来说,信息不全,比如说 触发异常的具体位置在哪: import traceb ...

  7. winform捕捉全局异常

    /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Main() { try { //设置应 ...

  8. delphi 捕捉全局异常错误的方法

    private     { Private declarations }   public   procedure GlobalExceptionHandler(Sender: TObject; E: ...

  9. 在Main方法中设置异常的最后一次捕捉

    在做Winfrom程序时,有时会遇到一个异常,可是这个异常不知道在什么地方发生的,程序会自动关闭,然后什么也没有了,在网上找到了一种方法,用来捕捉这种异常. 出现这种情况的原因是在程序中某些地方考虑不 ...

随机推荐

  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 ...

  2. maven 编译解决jdk 版本问题

    1.在父工程中pom 添加版本限制: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupI ...

  3. hadoop之HDFS学习笔记(二)

    主要内容:hdfs的核心工作原理:namenode元数据管理机制,checkpoint机制:数据上传下载流程 1.hdfs的核心工作原理 1.1.namenode元数据管理要点 1.什么是元数据? h ...

  4. TFS自动签出解决方案sln或者项目文件csproj的解决办法

    问题: 最近公司一个项目组的源代码解决方案打开时总是出现解决方案或者部分项目被自动签出的情况,但签入又提示没有变更.事情虽 小,导致几个程序员要用项目文件时总是要找其他人签入.浪费不少时间.出现时间有 ...

  5. SIEBEL GET最新时提示表异常

    无法GET最新,则将此表GET一次,CHECK OUT下来,再UNDO CHECK IN即可

  6. intellij idea15,SVN commit file提示No changes detected

    备注:我用的intellij 15,已经配置了SVN.且我的工程是从SVN导出的   遇到的问题:Subversion提交代码时提示No changes detected,当然新文件想要add也是选项 ...

  7. codeforces:Michael and Charging Stations分析和实现

    题目大意 迈克尔接下来n天里分别需要支付C[1], C[2], ... , C[n]费用,但是每次支付费用可以选择使用优惠或不使用优惠,每次使用价值X的优惠那么迈克尔所能使用的优惠余量将减少X并且当天 ...

  8. XSS学习笔记

    本片文章是读<<XSS跨站脚本gj剖析与防御>>一书的总结 常见的XSS攻击主要用于1.网络钓鱼,盗用用户账号2.窃取cookies 非httponly情况下,读取docume ...

  9. COGS 2189 帕秋莉的超级多项式

    放模板啦! 以后打比赛的时候直接复制过来. 说句实话vector的效率真的不怎么样,但是似乎也还行,最主要是……写得比较爽. #include <cstdio> #include < ...

  10. mysql新建用户并授权

      参考:https://www.cnblogs.com/zhangdiIT/p/8116776.html