异常处理机制: 异常检测 + 异常处理。
1. throw表达式:异常检测部分,使用throw表达式来表示程序遇到了无法处理的问题。
2. try语句块:异常处理部分。以关键字try开始,并以一个或多个catch子句结束。
try语句块中通过throw抛出的异常,通常会被某个catch子句处理(异常处理代码)。
3. 异常类:exception class,用于在throw表达式和catch子句之间传递异常的具体信息。
throw表达式
遇到该语句,抛出异常,终止当前的函数,并把控制权转移给能处理该异常的代码。
if (item1.isbn() != item2.isbn()){
// runtime_error是一个标准库异常类
throw runtime_error("Data must refer to same ISBN");
}
try语句块
注:迭代try语句块时,如果在当前try语句块没有找到对应的catch,那么就到调用该try语句块的函数中的try语句块中去找。如果到最后都没找到,程序转到名为terminate的标准库函数中。
try{
throw runtime_error("runtime error happen");
}catch(runtime_error err){
statements;
}
标准异常
1. 定义在四个头文件中:
(1)exception头文件;(2)stdexcept头文件;(3)new头文件;(4)type_info头文件
2. what成员函数,返回一个C风格字符串。