关于异常处理与程序性能
来源:互联网 发布:匿名四轴上位机源码 编辑:程序博客网 时间:2024/05/18 18:45
windows下,高级语言实现的异常,只要以Windows SEH(结构化异常处理)为顶层(异常处理栈底),都会使得CPU工作模式由用户模式转入内核模式。这代价相对在同一模式下执行来说,会比较高。程序的稳定总要牺牲性能的。
所以在对性能要求比较高程序中,对于一些可预见的错误,尽量减少异常处理。
以下是异常处理的顺序:
发生异常时系统的处理顺序(by Jeremy Gordon):
1.系统首先判断异常是否应发送给目标程序的异常处理例程,如果决定应该发送,并且目标程序正在被调试,则系统
挂起程序并向调试器发送EXCEPTION_DEBUG_EVENT消息.呵呵,这不是正好可以用来探测调试器的存在吗?
2.如果你的程序没有被调试或者调试器未能处理异常,系统就会继续查找你是否安装了线程相关的异常处理例程,如果
你安装了线程相关的异常处理例程,系统就把异常发送给你的程序seh处理例程,交由其处理.
3.每个线程相关的异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关的异常处理例程,
可交由链起来的其他例程处理.
4.如果这些例程均选择不处理异常,如果程序处于被调试状态,操作系统仍会再次挂起程序通知debugger.
5.如果程序未处于被调试状态或者debugger没有能够处理,并且你调用SetUnhandledExceptionFilter安装了最后异
常处理例程的话,系统转向对它的调用.
6.如果你没有安装最后异常处理例程或者他没有处理这个异常,系统会调用默认的系统处理程序,通常显示一个对话框,
你可以选择关闭或者最后将其附加到调试器上的调试按钮.如果没有调试器能被附加于其上或者调试器也处理不了,系统
就调用ExitProcess终结程序.
7.不过在终结之前,系统仍然对发生异常的线程异常处理句柄来一次展开,这是线程异常处理例程最后清理的机会.
- 关于异常处理与程序性能
- 关于异常处理代码块与性能
- 异常处理与程序中断
- 程序调试与异常处理
- 异常处理与程序调试
- 关于程序中异常的处理
- 关于java异常处理程序的陋习
- 第十五章 程序调试与异常处理
- C++ 程序调试与异常处理
- Python(异常处理与程序调试)
- Java程序性能优化总结--------异常处理篇
- 关于对异常程序处理的监视程序
- windows核心编程---异常处理程序与软件异常
- Rails 异常处理 && 性能
- 关于Java抛出异常与处理异常的思考
- 性能优化的异常与正常逻辑的处理。
- 异常与异常处理
- 异常与异常处理
- Windows的达尔文进化图
- 好用的软件
- js中数字计算精度
- web.config中的httpRuntime配置
- AMF3Connection类-使用AMF3数据格式来请求服务端数据
- 关于异常处理与程序性能
- linux下 tar解压 gz解压 bz2等各种解压文件使用方法
- C语言的编译过程
- pb String 函数使用注意事件
- office 2007及office 2010打开时报错解决方案
- 假如我是一个项目总监/经理——我手写我心
- C程序main函数执行原理
- 设计欣赏网
- SOA概念及其潜在优点