【C++】:异常处理简介

133 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

1️⃣前言

今天的笔记内容是:C++异常处理简介


2️⃣异常简介

✨什么是C++异常?

异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。

当C++程序运行时,可能会发生一些错误导致程序无法继续正常运行下去。比如数组下标越界,访问了不存在的下标数据;除0溢出;内存不足;文件操作时读取的文件不存在等。而C++异常为处理这些情况而提供了一种功能强大且灵活的工具,也就是一种转移程序控制权的方式。

✨异常与错误的区别

  • 异常Exception都是运行时的;
  • 编译时产生的不是异常,而是错误Error;
  • 最开始大家都将程序设计导致的错误Error认定文不属于异常Exception;
  • 但是一般都将Error作为异常的一种;
  • 所以异常一般分两类,ErrorExcept

✨C++异常处理的优势

早期在C语言中,通常是我们人为的对返回结果加一些标志来进行判定,比如发生错误返回什么标志,正常情况下我们又是返回什么标记。也就是说我们可以通过使用整型的返回值标识错误或者使用error宏来记录错误。

但C++的异常处理机制会比C语言的异常处理更有优势。具体如下:

  1. 在C语言中使用函数返回值或error宏来处理异常错误时,调用者可能会忘记检查,导致错误没有被处理,造成程序终止或者出现错误结果;而在C++中,如果程序出现异常且没有被捕获,那么程序就会终止。
  2. C++异常包含着语义信息,通过类型就能体现出来;
  3. 整型返回值缺乏上下文信息,而异常作为一个类,可以有自己的成员,这些成员就可以传递足够多信息。
  4. 异常处理可以在调用跳级。比如说在有多个函数的调用栈中出现了某个错误,使用整型返回值则要求在每一级函数中都要进行处理。而使用异常处理的栈展开机制则只需要在一处进行错误处理即可。