在前一篇中,我们了解了 STL
的迭代器的自定义。在掌握了自定义迭代器的基本知识后,我们将目光转向 C++ 中的异常处理机制。
异常处理是确保程序能够优雅地处理错误和意外情况的重要工具。在 C++ 中,异常处理机制使得程序员可以通过抛出和捕获异常来管理错误。我们的任务是定义异常类,并通过实例来展示它们的使用。
异常类的定义
在 C++ 中,可以通过定义一个类来创建自定义异常。通常来说,自定义异常类应该继承自 std::exception
类,这是 C++ 标准库提供的所有异常的基本类。通过继承,我们可以获得异常类所需的基础功能,同时也可以添加更多的自定义信息。
定义一个简单的异常类
以下是一个简单的自定义异常类 MyException
的示例:
1 |
|
在上述代码中,我们创建了一个命名为 MyException
的类,它包含一个字符串成员 message
用于存储异常消息,并重写了 what()
方法以返回这条消息。
使用自定义异常类
接下来,我们将展示如何在函数中使用我们的自定义异常类。考虑一个简单的情况,我们希望在发生错误时抛出 MyException
。
1 | void riskyFunction(bool triggerError) { |
在这个 riskyFunction
函数中,如果 triggerError
为 true
,我们将抛出一个 MyException
。
捕获自定义异常
现在,让我们编写一个主程序来调用这个函数,并捕获可能出现的异常。
1 | int main() { |
代码解释
在 main
函数中,我们分两次调用 riskyFunction
:
- 第一次调用时,我们传递
true
,这将导致抛出MyException
。异常会被catch
语句捕获,并输出异常消息。 - 第二次调用时传递
false
,这将正常执行,我们没有捕获异常的必要。
在这里,what()
方法返回的字符串给我们提供了详细的异常信息。
总结
到此为止,我们定义了一个自定义异常类并演示了如何在代码中使用它。我们通过抛出和捕获异常,确保程序在错误发生时能够适当地处理。
在下一篇中,我们将进一步讨论如何创建更多复杂的自定义异常,并探讨在现代 C++ 中处理异常的最佳实践。通过不断深入这个主题,我们可以更好地编写健壮、可维护的代码。