林锐《高质量程序设计指南C/C++》笔记04:异常处理

笔者有幸得到一次和行业前辈交流的机会,前辈也分享了他对于职业规划、人生发展的理解和感悟,笔者也获益颇丰。另外由于笔者主要方向是C/C++,刚入门不久,前辈也是针对能力提升方面推荐了很多课程和书籍,其中就有这本 《高质量程序设计指南C/C++》作者林锐,第三版

笔者先大致浏览了一遍该书,发现有很多平时开发或学习中没有注意到的小细节,因此新开一帖,作为自用的学习笔记。本系列由于是读书笔记,因此主要会记录平时没有留意的细节问题,并针对这些问题会提出一些额外问题和分析,如底层实现和延伸思考。

自己也是刚入门不久,可能会有些错误,欢迎大家一起学习,不吝赐教,有任何问题可以评论私信。


前面几篇:
林锐《高质量程序设计指南C/C++》笔记01:基本数据类型、类型转换
林锐《高质量程序设计指南C/C++》笔记02:断言、数组访问、位域、条件编译
林锐《高质量程序设计指南C/C++》笔记03:虚继承、C++重载内联



第十五章:C++异常处理

异常处理机制实际上是一种运行时通知机制。 由底层代码通知高层代码,通知的方式就是抛出一个异常

一、使用方法:

异常处理包括:抛出异常throw、提炼异常try{}、捕获异常catch{}和异常对象本身。

  1. throw语句:
    用于抛出一个异常,可以抛出任何类型的对象(如整数、字符串、自己定义的类型对象等)
    例如:throw 20;throw std::runtime_error("Error message");
  1. 异常是通过类型而不是值来进行匹配。
  2. 一个throw语句只能抛出一个异常。
  1. try{}代码块:
    该代码块中的代码在执行时可能会抛出异常。
    常常是在try块中通过if来判断是否throw一个或多个异常。示例见下面代码。
  1. 每一个try块后面必须至少跟着一个catch块。
  1. catch{}代码块:
    用于捕获异常并处理,catch块紧随try块之后。
  1. 一个catch{}只能捕获一个异常,但是可以有多个catch{}块来捕获不同类型的异常。如:
try {
   
   
    // 可能引发异常的代码
    if (some_error_condition) {
   
   
        throw std::runtime_error("An error occurred");
    }
} catch (const std::runtime_error &e) {
   
   
    // 处理 runtime_error 类型的异常
    std::cerr << "Runtime error: " << e.what() << std::endl;
} catch (const std::exception &e) {
   
   
    // 处理所有其他 std::exception 派生类的异常
    std::cerr << "Exception: " << e.what() << std::endl;
} catch (...) {
   
   
    // 处理所有其他类型的异常
    std::cerr << "Unknown error occurred" << std::endl;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值