标签:
问题:
在项目中调用第三方库时,使用try{}catche(...){}语句,异常无法捕获。
解决方案:
在项目属性->C/C++->代码生成->启用C++异常是选择第三项:是,但有SEH异常(/EHa),能够捕获异常。(VS2005 SP1)
相关知识:
1 C++及Windows异常处理(try,catch; __try,__finally; __try, __except)
原文地址:http://shijuanfeng.blogbus.com/logs/178616871.html
2 错误处理和异常处理,你用哪一个
原文地址:http://bbs.chinaunix.net/thread-142587-1-1.html
使用实例:
1 原文地址:http://www.doyj.com/2006/09/11/try-catch/
向非法地址写入数据,使用try catch 在release 模式下无法捕获异常,使用__try{}__except(){}能够捕获
1 #include "stdafx.h" 2 #include <vector> 3 #include <iostream> 4 #include <cstdlib> 5 #include <afxwin.h> 6 using namespace std; 7 int _tmain(int argc, _TCHAR* argdv[]) 8 { 9 __try 10 { 11 BYTE* pch; 12 pch = (BYTE*)00001234; 13 *pch = 6; 14 } 15 __except( EXCEPTION_EXECUTE_HANDLER ) 16 { 17 printf("%s","Access Violation"); 18 } 19 20 system("pause"); 21 return 0; 22 }
除数不能为零举例
1 #include "stdafx.h" 2 #include <vector> 3 #include <iostream> 4 #include <cstdlib> 5 using namespace std; 6 7 void division(int dividend,int divisor) 8 { 9 int result = 0; 10 if(divisor == 0) throw("除数不能为零"); 11 result = dividend/divisor; 12 cout<<result<<endl; 13 } 14 int _tmain(int argc, _TCHAR* argdv[]) 15 { 16 try 17 { 18 division(4,0); 19 return 0; 20 } 21 catch (const char *err_msg) 22 { 23 cout<<err_msg<<endl; 24 } 25 26 27 system("pause"); 28 return 0; 29 }
标签:
原文地址:http://www.cnblogs.com/nightcatcher/p/4231522.html