gpt4 book ai didi

c++ - 递归如何针对 try catch block 工作?

转载 作者:行者123 更新时间:2023-11-30 02:29:10 25 4
gpt4 key购买 nike

我需要澄清 try block 如何与递归一起工作。

假设我有一个名为 thisFunction 的函数,其结构如下:

thisfunction()
{
if (...)
{
//...
}
else
{

if()
{
try {
thisFunction()
}
catch(...) {
throw exception()
}

//...
}
}
}
}

运行时,如果程序进入try,会发生什么?

thisFunction()如果碰巧重新运行又落入try block ,是否在进入catch之前运行一次?

它甚至会转到 catch(...) 吗?

最佳答案

递归仍然是函数调用,它只是恰好是函数调用自身。

在调用下一次迭代时,对 thisFunction() 的每次调用都有自己的 try/catch block 。如果thisFunction()任何 迭代抛出异常,该异常将按预期被最近的匹配catch block 捕获。

如果这恰好是前一个 thisFunction() 迭代的 catch,那么该迭代的 catch 将抛出一个新异常,该异常将像任何其他异常一样处理。对于 thisFunction 的多次迭代,异常将继续被捕获并抛出,直到最终异常从初始的 thisFunction() 调用中逃脱,并且是否被捕获取决于第一次调用 thisFunction() 开始递归的代码。

关于c++ - 递归如何针对 try catch block 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864853/

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