gpt4 book ai didi

c++ - 为什么要重新抛出异常

转载 作者:行者123 更新时间:2023-11-30 01:16:09 24 4
gpt4 key购买 nike

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

最佳答案

当一个函数不能满足它的约定(它向调用者 promise 它会做的事情)时抛出一个异常。当一个函数调用另一个抛出异常的函数时,有四种主要的响应方式:

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

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

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

  4. 捕获异常并抛出一个不同的异常(可能包装原来的异常)。如果此函数无法处理异常,则应该这样做,但不同的异常可以更好地向调用代码表达问题。

关于c++ - 为什么要重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com