为什么要重新抛出异常

2024-03-10

在 C++ 中,为什么要重新抛出异常。为什么不让当前的catch块处理异常呢?出于什么原因,您会将异常重新抛出到另一个 try/catch 块?


当函数无法满足其约定(它向调用者承诺它将执行的操作)时,会引发异常。当一个函数调用另一个抛出异常的函数时,它的响应方式主要有四种:

  1. 捕获异常并处理。仅当函数能够满足其约定(尽管抛出异常)时才应执行此操作。如果它捕获异常但未能满足其约定,则它向调用代码隐藏了问题。

  2. 允许异常传播。如果此函数无法处理异常(即,由于引发了异常,因此该函数无法满足其约定),并且异常向调用代码公开了适当的信息,则应该执行此操作。

  3. 捕获异常,进行一些清理和/或添加额外信息,然后重新抛出它。如果此函数无法处理异常,则应该执行此操作,但在传播异常之前需要进行一些清理。它还可以提供额外的信息来帮助处理/调试异常(我经常认为程序员是最后的异常处理程序)。

  4. 捕获异常并抛出不同的异常(也许包装原件)。如果此函数无法处理异常,则应该执行此操作,但不同的异常可以更好地向调用代码表达问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么要重新抛出异常 的相关文章

随机推荐