专题:异常处理

虽然之前搞过一个,但准备重做一个。
1.异常到底是神马?
异常,就是程序运行期间发生的错误,不同于语法错误。也就是说是逻辑出现了问题。
大部分异常返回的常常是 RE

例如,c=a/0; 除0会报错

2.怎么处理这个异常?
良心的C++給我们了两个捕获方式:

1.throw
2.try

(1).throw
它抛出的通常是一个对象,对象就是捕获的异常类型,throw可以把对象抛向上一级。上一级如果仍然没有正确处理,异常对象逐级向上反馈。如果主函数仍然没有正确处理,整个程序就会崩溃掉。
举个例子:

double seek(double a,double b){
    if(b==0){
        throw "除数为0";
    }
    return a/b;
}
int main(){
    int a=1,b=0;
    cout<<seek(a,b);
    return 0;
}

(2).try
在try块中放置抛出异常的代码:

double seek(double a,double b){
    if(b==0){
        throw "除数为0";
    }
    return a/b;
}
int main(){
    int a=1,b=0;
    try{
        cout<<seek(a,b);
    }catch(const char *e){
        cout<<e;
    }
    return 0;
}

3.标准异常
c++給常见的异常给予了分类:



需导入头文件#include<stdexcept>

4 个赞