开发者社区> 旭东的博客> 正文

C++ 异常处理

简介: 异常,让一个函数在遇到自己无法处理的问题时可以即时抛出,希望他到调用着直接或者间接的处理该异常。 错误的处理依然是一件很困难的事情,C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。
+关注继续查看

异常,让一个函数在遇到自己无法处理的问题时可以即时抛出,希望他到调用着直接或者间接的处理该异常。

错误的处理依然是一件很困难的事情,C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。

 

c++异常处理try catch特点:

1. try catch可以嵌套使用

2. 可以使用throw语句抛出异常

3. 多个catch, 只有第一个匹配到的catch执行

4. "..."作为兜底可以匹配所有异常, 应该放在最后catch, 方便其他catch分支匹配

 1 #include <iostream>
 2 #include <exception>
 3 
 4 using std::cout;
 5 using std::endl;
 6 
 7 class Test{
 8 public:
 9     Test(const std::string msg):_msg(msg) { } 
10     std::string msg() { return _msg; }
11 private:
12     std::string _msg;
13 };
14 
15 int main(){
16     try{
17         try{
18             try{
19                 //throw 4;
20                 //throw "throw err msg";
21                 throw 1.2;
22                 //throw Test("test err");
23             }   
24             catch(int a){   //捕获int类型异常
25                 cout << "catch " << a << endl;  
26             }   
27             catch(const char* msg){ //捕获char*类型
28                 cout << "throw the old err" << endl;
29                 throw ; //将异常原样抛出
30             }   
31             catch(Test &t){ //捕获Test类型异常
32                 cout << "throw " << t.msg() << endl;
33             }   
34         }   
35         catch(const char *msg){
36             cout << "cat " << msg << endl;
37         }   
38     }   
39     catch(...){ //"..."作为兜底可以捕获所有到异常, 一般放在最后一个catch
40         cout << "other err" << endl;
41     }
42 
43     return 0;
44 }

 


 c++ 标准异常:

http://www.cplusplus.com/reference/exception/exception/

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++——异常处理
C++——异常处理
9 0
C++菜鸟学习笔记系列(16)——跳转语句及异常处理
C++菜鸟学习笔记系列(16)——跳转语句及异常处理
66 0
如何用c++实现异常处理
如何用c++实现异常处理
33 0
解析一下C++的异常处理
解析一下C++的异常处理
35 0
C++RTTI(运行时类型识别)与异常处理解析
C++RTTI(运行时类型识别)与异常处理解析
38 0
【C++】C++异常处理知识点总结
【C++】C++异常处理知识点总结
38 0
08.C++异常处理
(创建于2017/12/30) 1.按类型抛出异常 void main(){ try{ int age = 300; if (age > 200){ throw 9.
746 0
+关注
旭东的博客
从事互联网开发工作,写博客,记录问题与学习支持,并分析
文章
问答
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
对象的生命期管理
立即下载
移动与复制
立即下载