异常处理也有处理不了的“异常”问题
来源:互联网 发布:元和网络客服电话 编辑:程序博客网 时间:2024/05/01 01:40
异常处理也有处理不了的“异常”
看下面的代码
int _tmain(intargc, _TCHAR* argv[])
{
char* p = (PCHAR)1;
__try
{
nSize = stricmp(p, "test");
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
printf("err\n");
}
这段代码运行后,异常会被正常的捕获,输出err。但是如果将(PCHAR)1改为(PCHAR)0,编译运行就会崩溃,为啥呢?为啥try不住这个异常?其实问题出在了stricmp这个CRT函数上面,并不是异常处理函数的问题,stricmp内部会校验参数的合法性,比如会判断第一个参数是否为空指针,如果为空指针,会调用_invoke_watson函数,这个函数直接设置好异常相关的参数,通过SetUnhandledExceptionFilter(NULL)来清空先前的顶层异常处理,随后调用UnhandledExceptionFilter来触发默认的异常处理,这时候就弹出一个系统默认的异常处理框,这样你的SEH根本就没有机会被执行,顶层异常处理函数也没有机会运行,所以对于像stricmp之类的CRT函数,一定要手工的检查参数是否为空,靠异常处理是帮不了你的。
- 异常处理也有处理不了的“异常”问题
- 异常处理的问题
- 有未经处理的异常
- Servlet异常处理的问题,
- 异常处理的性能问题
- 异常处理的六个问题
- PHP异常问题的处理
- 关于异常处理的问题
- Java的异常处理问题
- try-catch 处理异常,也即 C++ 异常处理
- c++异常处理问题
- 自定义异常处理问题
- Java异常处理问题
- 异常处理中的问题
- SlidingMenu 异常问题处理
- Mysql异常问题处理
- 异常问题处理
- C++ 异常处理:类的异常处理--异常处理类
- 重建图标缓存的两个脚本--bat命令和vbs文件
- Android基于TranslateAnimation的动画动态菜单
- 深入理解JavaScript系列(14):作用域链(Scope Chain)
- .net 线程小结
- 深入理解JavaScript系列(15):函数(Functions)
- 异常处理也有处理不了的“异常”问题
- 文件备份一:ubuntu配置samba服务器
- UML之旅三
- 深入理解JavaScript系列(16):闭包(Closures)
- 关于typedef的用法总结
- 深入理解JavaScript系列(17):面向对象编程之概论
- 深入理解JavaScript系列(18):面向对象编程之ECMAScript实现(推荐)
- 读爱迪生有感-八年级作文
- MySQL常用函数