当前位置: 首页 > web >正文

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

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

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

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


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


文章目录

  • 第十五章:C++异常处理
    • 一、使用方法:
    • 二、异常执行顺序:
    • 三、注意:
    • 四、异常的类型匹配规则:
      • 1. 精确匹配
      • 2. 基类匹配
      • 3. 基类指针匹配
      • 4. void* 捕获任何类型的指针异常
      • 5. 用 ... 捕获所有异常
      • 注意:
  • 总结


第十五章: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
http://www.xdnf.cn/news/11313.html

相关文章:

  • C# Label显示多行文本及换行(WinForm/WebForm)
  • 计算机论文投稿指南
  • MP3的频率、比特率、码率与音质的关系
  • PowerBuilder 12使.NET的应用开发更快捷
  • 适合新手编程的软件,什么编程软件比较好比较容易入门
  • ln 命令用法 hard link 与 symbolic link 区别 分析
  • 搜狗云输入法、Google手机语音搜索:两款创新云产品
  • IOCP的一些总结
  • linux串口驱动
  • 2020年12月统考练习题
  • 电脑蓝屏代码大全及解决办法合集
  • Linux系统移植
  • GB2312汉字拼音对照表
  • 星三角正反接线实物图_两个老电工的星三角之争,大家都来评评理!
  • html滚动条样式
  • 按键精灵
  • MSNLite v3.0正式版
  • 《Xenogears》(异度装甲)隐含的原型与密码
  • 最全性能测试 —— 性能测试概念、性能测试主流工具!,2024年最新IDEA太强悍了
  • 除了 P 站,程序员摸鱼还喜欢上哪些网站?
  • Jmeter 性能 —— 50TPS与秒杀达到多少人!_jmeter压测吞吐量最高50左右
  • 最新闲鱼小众蓝海虚拟资源,单号日入300+,三天必起店,矩阵放大月入1-2W
  • Android手机SD卡分区
  • 事件对象以及常见属性
  • 制作一个简单HTML旅游网站(HTML+CSS+JS)无锡旅游网页设计与实现8个页面
  • XMLHttpRequest 异步方式和同步方式
  • 如何在默认打开方式中去掉已失效或者已删除的应用选项
  • C++实现11平台魔兽全图外挂
  • oracle exits 的用法,oracle中的exists和not exists和in用法详解
  • Windows Live Messenger (MSN) 9.0 错误代码 80040154 解决