语句
try语句块和异常处理
C++语言中,异常处理包括以下几种:
- throw表达式,异常检测部分使用throw表达式,来表示程序遇到了无法处理的问题。
- try语句块(try block),异常处理部分使用try语句块处理异常,try语句块以关键字key开始,并以一个或多个catch子句结束。
- 一套异常类,用于在throw表达式和相关catch子句之间传递异常的具体信息。
1、try语句块
try语句的通用语法形式是:
try
{
program-statements
}
catch (exception-declaration)
{
handler-statements
}
catch (exception-declaration)
{
handler-statements
}
2、标准异常
C++标准库中定义了一组类,用于报告标准库函数遇到的问题。这些类分别定义在以下四个头文件中:
-
exception头文件定义了最通用的异常类exception。此类只报告异常的发生,不提供任何额外信息。
-
stdexcept头文件定义了几种常用的异常类
-
new头文件定义了bad_alloc异常类型
-
type_info头文件定义了bad_cast异常类型
<stdexcept>
定义的异常类
exception | 最常见的问题 |
---|---|
runtime_error | 只有在运行时才能检测出的问题 |
range_error | 运行时错误:生成的结果超出了有意义的值域范围 |
overflow_error | 运行时错误:计算上溢 |
underflow_error | 运行时错误:计算下溢 |
logic_error | 程序逻辑错误 |
domain_error | 逻辑错误:参数对应的结果值不存在 |
invalid_error | 逻辑错误:无效参数 |
length_error | 逻辑错误:试图创建一个超出改类型最大长度的对象 |
out_of_error | 逻辑错误:使用一个超出有效范围的值 |