持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
1️⃣前言
今天的笔记内容是:C++异常处理简介
2️⃣异常简介
✨什么是C++异常?
异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误)所导致的。
当C++程序运行时,可能会发生一些错误导致程序无法继续正常运行下去。比如数组下标越界,访问了不存在的下标数据;除0溢出;内存不足;文件操作时读取的文件不存在等。而C++异常为处理这些情况而提供了一种功能强大且灵活的工具,也就是一种转移程序控制权的方式。
✨异常与错误的区别
- 异常
Exception都是运行时的;- 编译时产生的不是异常,而是错误
Error;- 最开始大家都将程序设计导致的错误
Error认定文不属于异常Exception;- 但是一般都将
Error作为异常的一种;- 所以异常一般分两类,
Error与Except
✨C++异常处理的优势
早期在C语言中,通常是我们人为的对返回结果加一些标志来进行判定,比如发生错误返回什么标志,正常情况下我们又是返回什么标记。也就是说我们可以通过使用整型的返回值标识错误或者使用error宏来记录错误。
但C++的异常处理机制会比C语言的异常处理更有优势。具体如下:
- 在C语言中使用函数返回值或
error宏来处理异常错误时,调用者可能会忘记检查,导致错误没有被处理,造成程序终止或者出现错误结果;而在C++中,如果程序出现异常且没有被捕获,那么程序就会终止。- C++异常包含着语义信息,通过类型就能体现出来;
- 整型返回值缺乏上下文信息,而异常作为一个类,可以有自己的成员,这些成员就可以传递足够多信息。
- 异常处理可以在调用跳级。比如说在有多个函数的调用栈中出现了某个错误,使用整型返回值则要求在每一级函数中都要进行处理。而使用异常处理的栈展开机制则只需要在一处进行错误处理即可。