码迷,mamicode.com
首页 > 其他好文 > 详细

try{}catch(...){}

时间:2015-01-18 11:43:40      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

问题:

在项目中调用第三方库时,使用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 }
View Code

 

2 原文地址:http://zhidao.baidu.com/link?url=Hnbpfn6eKaE-8L43eJEwQB1crmZjyQxjrKZhG66NgzkDrPLHHSBdWwZ3uM1RAqiw34cBYtEmYQDVENdazxlDSo0sUZCuXWIYyHLKc5VOJQO

 除数不能为零举例

 

技术分享
 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 }
View Code

 

try{}catch(...){}

标签:

原文地址:http://www.cnblogs.com/nightcatcher/p/4231522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!