我需要澄清一個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