异常处理是编程中错误管理的一个重要方面。本文深入探讨自定义异常抛出、try 语句和 catch 块来处理特定场景。
抛出自定义异常
抛出带有自定义消息的异常,利用 throw 语句并指定异常对象。例如,假设我们有一个函数compare(int a, int b),当任一整数为负数时,它应该引发异常。修改后的定义将涉及:
#include <stdexcept> int compare(int a, int b) { if (a < 0 || b < 0) { throw std::invalid_argument("received negative value"); } }
为了方便起见,C 标准库提供了一组预先构建的异常对象。请记住遵循按值抛出和按引用捕获的最佳实践。
捕获自定义异常
定义异常后,下一步是使用 try 处理它- 捕获块。下面的代码演示了捕获和处理由比较抛出的 std::invalid_argument 异常:
try { compare(-1, 3); } catch (const std::invalid_argument& e) { // Perform actions based on the exception }
可以以菊花链方式连接其他 catch 块以区分各种异常类型。或者,catch(...) 不加区别地捕获任何类型的异常。
高级异常处理
使用 throw 重新抛出异常;允许异常在调用堆栈中进一步传播。当函数想要表明它无法在内部处理异常并且更愿意将其委托给更高级别的函数时,这可能很有用。
以上是如何在 C 中自定义异常处理?的详细内容。更多信息请关注PHP中文网其他相关文章!