假设我有一个(非常简单的)递归方法,如下所示:
public static void myMeth(int n)
{
// do something
// now execute the recursive call
if (n < 0) return;
else if ( n == SOME_CONST ) throw new UnsupportedOperationException();
else myMeth(n - 1);
}
(第二个条件
n == SOME_CONST
仅用于说明有时可能会发生异常,有时却不会发生异常)。假设我调用了
myMeth(10)
,并且在几次递归调用(例如SOME_CONST == 5
)之后确实发生了异常。我有什么办法可以做(使用
try-catch
块)使我回到myMeth
的第一帧吗? 最佳答案
这可能行得通,可能有一个更清洁的解决方案,但这是一个开始:
public static void myMeth(int n, boolean firstCall)
{
// do something
// now execute the recursive call
try
{
if (n < 0) return;
else if ( n == SOME_CONST ) throw new UnsupportedOperationException();
else myMeth(n - 1, false);
}
catch(UnsupportedOperationException e)
{
if (firstCall)
{
//logic
}
else
{
throw e;
}
}
}
关于java - 展开到Java递归调用的第一帧?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21171274/