C++ 异常处理
1、throw 表达式
用于抛出异常
- throw 后面是异常类型
- 可以添加异常信息
// 抛出一个异常
if(a != b)
throw runtime_error("not equal")
2、try 语句
用于捕捉异常
try
{
program-statament;
}
catch(exception-declaration)
{
handler-statements;
}
- program-statament:可能存在异常的语句
- exception-declaration:异常声名,如果 catch 到此类异常进入与之对应的 handler-statements
- handler-statements:异常处理程序
- 可以有多个catch
-
catch 语句
catch(runtime_error err)
{
cout << err.what() << endl;
}
- runtime_error err:获得此类异常的对象
- err.what():返回异常信息。每个异常类都有 what() 这个成员函数
异常匹配
- 由内而外匹配
- 如果没有匹配的。则由标准库函数 terminate 处理
3、标准异常
- exception、bad_alloc、bad_cast 只能采用默认初始化。
- stdexcept 初始化时必须提供初始值(字符串),用于关于异常的信息。