我需要澄清一个try块如何与递归工作。递归如何针对try catch块进行工作?
说我有一个名为thisFunction
函数这种结构:
thisfunction()
{
if (...)
{
//...
}
else
{
if()
{
try {
thisFunction()
}
catch(...) {
throw exception()
}
//...
}
}
}
}
当这个运行时,如果程序不断进入try
,会发生什么?
是否才去catch
如果碰巧重新运行,并再次落入try
块thisFunction()
运行一次?
将它曾经甚至去到catch(...)
?
所以,如果我想这成为一个迭代函数,使用堆栈方法将不起作用,因为大部分函数不在try块中,所以catch几乎没用。没有完全重构代码,有没有办法解决这个问题? – randomhereok
你究竟想要完成什么?请更具体一些。 –
使整个函数迭代。而不是可能溢出堆栈。我想知道是否还有办法这样做,仍然保持try catch(或者至少每当重复循环发生异常错误时catch会抓住它),或者如果不是,最好的方法是什么。我知道我可以使用while循环进行最大数量的迭代,但我想完全避免经济衰退。 – randomhereok