- C++内置了异常处理的语法元素try…catch…
- try语句处理正常代码逻辑
- catch语句处理异常情况
- try语句中的异常由对应的catch语句处理
- try语句处理正常代码逻辑,catch语句处理异常情况
try
{
double r = divide(1,0);
}
catch(...) //"..."表示处理所有异常
{
cout << "Divided by zero..." << endl;
}
- C++通过throw语句抛出异常信息
throw抛出的异常必须被catch处理
- 当前函数能够处理异常,程序继续往下走
- 当前函数无法处理异常,则函数停止执行,并返回
未被处理的异常会顺着函数调用栈向上传播,直到被处理为止,否则程序将停止执行
同一个try语句可以跟上多个catch语句
- catch语句可以定义具体处理的异常
- 不同类型的异常有不同的catch语句负责处理
- try语句中可以抛出任何类型的异常
- catch(…)用于处理所有类型的异常
- 任何异常都只能被捕获(catch)一次
异常处理的匹配规则
- 异常抛出后,之上而下严格匹配每个catch语句处理的类型(异常匹配时,不进行任何的类型转换)