C++异常机制
1.异常处理的3个组成部分
- 使用try块
- throw引发异常
- catch捕获异常
使用:
try{
throw [对象];
try块中放可能会引发异常的调用等操作
}
catch(类型 变量名){
catch会捕获和圆括号中类型相同的异常(通过throw引发的)
}
一个try块可以有多个catch块
执行过程:
首先执行try块中的代码,如果没有引发异常,跳过catch,向下执行;如果try块中的代码引发了异常,则通过函数的调用链向上跳转,直到找到与之匹配的catch块。
注意,如果main(),也就是最上层的调用函数都没有匹配的catch块,这个异常就会变成未捕获异常,这时,系统会调用terminate()函数,terminate()函数默认调用abort()函数。
abort()函数向标准错误流发送消息,并结束程序的运行。
举例:
首先声明并定义一个会引发异常的函数
double devide(const double a, const double b) {
if (0 == b)
throw "error : 除数不能为0";
return a / b;
}
使用try-catch
int main(void) {
double a, b;
while (cout << "请输入两个数: "