c++异常

简介: assert ()断言,为真继续,为假终止。 异常处理更为高级,可处理相应异常。   C++的异常处理引入了三个关键字 try(检测异常)、throw(抛出异常)、catch(捕获异常)。 try 负责监视可能出现异常的程序段。若该段出现异常,程序将不再按原有流程走,而是被throw抛出异常,程序控制权交给catch子句,然后从catch块处顺序执行。 try 与 catch 语

assert ()断言,为真继续,为假终止。

异常处理更为高级,可处理相应异常。

 

C++的异常处理引入了三个关键字 try(检测异常)throw(抛出异常)catch(捕获异常)

try 负责监视可能出现异常的程序段。若该段出现异常,程序将不再按原有流程走,而是被throw抛出异常,程序控制权交给catch子句,然后从catch块处顺序执行。

try 与 catch 语句块必须紧连。

异常处理机制可以将正常语句与异常处理语句分开表示,使逻辑结构更清晰。

异常处理流程:

1.执行try{}块中的语句。

2.若没有引起异常,则跳过catch块继续执行。

3.若引起异常,并由throw抛出,则进入catch块。

4.若未找到区配异常的catch块,程序自动调用系统函数terminate()结束自己。

 

调试时会输出异常,而正式运行时却不会执行catch{}里面的语句,暂时不懂。

 

异常中断了程序的正常流程,所以异常涉及到的对象可能为无效状态。那些在异常发生期间正确执行了“清理”工作的代码被称作是异常安全

例一:

例二:

stdexcept头文件定义了常见的异常类,runtime_error是其中一个,what()是它的成员函数,返回创建异常对象时的字符串参数。

目录
相关文章
|
1月前
|
算法 编译器 C语言
【C++ 异常】C++ 标准库异常类及其应用
【C++ 异常】C++ 标准库异常类及其应用
28 0
|
1月前
|
C++
C++ 捕获所有异常并拿到错误原因的方法
C++ 捕获所有异常并拿到错误原因的方法
|
1月前
|
安全 算法 C++
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误(三)
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误
47 0
|
1月前
|
存储 安全 算法
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
26 0
|
3月前
|
存储 C++
c++以exception_ptr传递异常
自C++11起,C++标准库提供一个能力:将异常存储于类型为exception_ptr的对象中,稍后才在其他情境(context)中处理它们:
16 0
|
1月前
|
算法 程序员 编译器
【C++ 异常】深入探究C++的stdexcept类库
【C++ 异常】深入探究C++的stdexcept类库
20 0
|
1月前
|
存储 安全 NoSQL
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误(二)
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误
37 1
|
1月前
|
安全 程序员 编译器
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误(一)
【C++ 异常 】深入了解C++ 异常机制中的 terminate()处理 避免不必要的错误
66 1
|
1月前
|
设计模式 安全 编译器
【C++ 异常】C++异常处理:掌握高效、健壮代码的秘密武器
【C++ 异常】C++异常处理:掌握高效、健壮代码的秘密武器
54 1
|
5月前
|
安全 Java 编译器