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/

相关文章
|
4月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
77 2
|
7月前
|
安全 编译器 程序员
【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用(一)
【C++ 泛型编程 进阶篇】 C++ 泛型编程 模板与异常处理、模板与友元之间的使用
99 1
|
7月前
|
安全 C++
C++中的异常处理与错误处理机制
C++中的异常处理与错误处理机制
81 0
|
6月前
|
C++
C++一分钟之—异常处理try-catch
【6月更文挑战第22天】C++异常处理机制,借助`try`、`catch`、`throw`管理错误,优雅处理异常,防止程序崩溃。`try`包围可能出错的代码,`catch`捕获异常,`throw`引发异常。基本结构是:`try-catch`块中,未捕获的异常将向上抛出。多`catch`块可按顺序捕获不同类型的异常。易错点包括忽视异常传播、不精确的`catch`和资源未清理。通过精确捕获、RAII技术和适当的异常策略,提升代码健壮性和效率。
49 1
|
6月前
|
C++
C++核心技术要点《异常处理详解》
C++核心技术要点《try-throw-catch异常处理详解》
52 2
|
6月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
48 0
|
7月前
|
程序员 编译器 C++
C++中的异常处理:技术详解与实践
C++中的异常处理:技术详解与实践
119 1
|
7月前
|
C++
C++程序异常处理
C++程序异常处理
45 1
|
6月前
|
C++
C++对C的改进和拓展\异常处理
C++对C的改进和拓展\异常处理
38 0
|
6月前
|
C++
Essential C++ 第7章 异常处理
Essential C++ 第7章 异常处理