C++异常处理


C++异常处理

异常处理是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况

异常处理的目的:通过异常处理,我们可以对用户在程序中的非法操作进行控制和提示,以防程序崩溃;但是异常处理没有普通方法调用速度快,过度的错误处理会影响应用程序运行的效率

#include <iostream>
using namespace std;
void func(float a,float b,float &c)
{
    c=a/b;
}
int main() {
    float a=10,b=0,c=0;
    func(a,b,c);
    cout<<"hello world"<<endl;
    return 0;
}

image-20210605152723693

注意:b是float类型,不是一个精确值,是一个接近0的近似值,所以程序并没有中断

#include <iostream>
using namespace std;
void func(float a,float b,float &c)
{
    if(b>-0.00001&&b<0.00001){
        return ;
    }
    c=a/b;
}
int main() {
    float a=10,b=0,c=0;
    func(a,b,c);
    cout<<"hello world"<<endl;
    return 0;
}

C++异常处理方式

C++异常处理主要使用三个关键字:try、throw和catch

try{
    包含可能抛出异常的语句;
}catch(类型名[形参名]){
    处理异常的语句;
}
  • 满足某个条件时显式抛出一个异常
  • 使用catch块来匹配抛出的异常类型
#include <iostream>
using namespace std;
void func(float a,float b,float &c)
{
    // 显式抛出异常
    if(b>-0.00001&&b<0.00001)
        throw "error b=0";
    c=a/b;
}
int main() {
    float a=10,b=0,c=0;
    try{
        func(a,b,c);
    }catch(const char *error){
        cout<<error<<endl;
    }catch(int error){
        cout<<error<<endl;
    }catch(...){
        cout<<"可以捕获任何一个异常"<<endl;
    }
    // 按照顺序捕获异常,匹配了之后就不会再向下匹配
    // 一般匹配程度高的catch块放在前面,而...的catch块是“保底”的,防止有些异常没有匹配到catch块,通用性最强但是针对性最差,所以应该放在所有catch块的后面
    printf("hello world");
    return 0;
}

image-20210605155015241

异常处理执行顺序:抛出异常、捕获异常、处理异常


文章作者: dyl
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 dyl !
 上一篇
搭建博客 搭建博客
下载node.js,配置环境变量,安装Hexo,将Hexo部署在GitHub,该文章并不包含如何下载主题以及主题个性化配置,推荐使用matery主题
2023-12-10 dyl
下一篇 
C++流 C++流
C++输入输出基本概述以及方法调用,流向内存的数据称为输入流,流出内存的数据称为输出流,该视频来自博主b站总结
2023-12-10 dyl
  目录