C++异常处理与友元及运算符重载深入解析
1. 异常处理
在C++编程中,异常处理是一项至关重要的技术,它能帮助我们编写出更健壮、更可靠的程序。用户代码难免会出现错误,而语言支持的异常处理机制可以有效减少代码中的漏洞。
我们已经了解了如何使用 try
、 throw
和 catch
这些核心异常处理特性。这些关键字有多种用途,例如将异常抛给外部处理程序、使用各种类型的处理程序,以及在单个 try
块中选择性地组合程序元素。我们还学习了如何使用 set_terminate()
和 set_unexpected()
注册自己的函数,以及如何利用现有的C++标准库异常层次结构。此外,我们还探索了定义自己的异常类来扩展这个层次结构。
1.1 创建自定义异常类
理解如何创建自己的异常类(无论是作为嵌套类还是从 std::exception
派生)非常有用。我们可以创建特定于应用程序的异常层次结构。例如,在一个学生/大学的应用程序中,可能会有以下异常情况:
- 课程安排过满异常 :如果一个学生试图注册超过每个学生允许的最大课程数量,就抛出 TooFullSchedule
异常。这个类可以从标准库异常类派生。
- 课程已满异常 :如果一个学生试图注册已经满员的课程, Course::AddStudent(Student *)