![]() |
1
2
我认为您正在尝试在异常详细信息中包含递归路径,以帮助调试。 试试这个怎么样?
如果使用线程等,则可能需要查看线程本地存储中的存储路径。 如果您不希望强制调用者处理递归异常,您可以将__路径__设为公用,以便调用者可以访问它。(正如埃里克·利珀特后来的回答) 或者,您可以在捕获异常时记录错误日志系统的路径,然后重新抛出异常。
这样做的好处是,调用者根本不需要知道__路径_。 归根结底,这都取决于您的调用者需要什么,不知何故,我认为您是这段代码的调用者,所以我们没有必要再去猜测这一级别的交易需要什么。 |
![]() |
2
5
只是简化(稍微)异常处理:
如果这对你有任何用处的话,你会得到调用堆栈信息,除此之外,你可以把它写成一个片段,然后把它插入到你需要的地方,以便重新可用。 还有以下可能性,可能会很慢,但会起作用:
|
![]() |
3
4
将catch处理程序从递归函数中拉出,然后在不减少处理的情况下编写递归,怎么样?
|
![]() |
4
4
您的问题在异常处理中。在自己的异常中包装一个异常通常是一个坏主意,因为它给代码调用方增加了处理异常的负担。如果调用方怀疑它们可能会通过调用代码导致“找不到路径”异常,则无法将其调用包装在捕获IOException的try catch中。他们必须捕获递归异常,然后编写一组代码来询问它,以确定它实际上是什么类型的异常。有时这种模式是合理的,但我不认为这是其中之一。 问题是,这里根本不需要使用异常处理。以下是解决方案的一些理想方面:
好的,太好了,如果这些是设计目标,那么就实现:
现在来电者可以处理:
你看到我们在这里做什么了吗?我们利用了这样一个事实:异常会阻止递归算法的运行。我们要做的最后一件事是通过最后一次突然出现来清理道路;我们 希望 在一个例外情况下,Pops会丢失! 有道理? |
![]() |
5
0
这样,您只处理一次,如果一个异常引发递归2处理它,则递归将中止。 |
![]() |
jkfe · 为什么println会在这段递归代码中执行? 3 年前 |
![]() |
Jimmy · 这种算法怎么能按顺序遍历树“爬上”树呢? 3 年前 |
![]() |
AvirukBasak · gcc中无return语句的尾部递归 3 年前 |
![]() |
Dharmik Patel · 使用python递归完全可以整除 3 年前 |
![]() |
W.tan · 一维最短距离递归算法 3 年前 |
![]() |
ncarrawa · 将1添加到i(递归)时出现类型错误 3 年前 |
![]() |
Eren · Python递归何时返回[duplicate] 3 年前 |