在 Java 代码中使用 return
关键字会将执行返回到调用堆栈中的最后一段调用代码。如果对象foo
调用baz.bar()
,bar
方法中的return
关键字会继续执行代码foo
.
假设我有对象 foo
调用 foofoo
在上面的场景中调用 foofoofoo
和 foofoofoo
调用 baz.bar()
。 Java 中是否有使用 return
关键字或其他关键字,以便 bar
方法中的代码可以一直返回到 foo
?
(无一异常(exception))
最佳答案
不,这是不可能的。您必须自己通过代码来处理这个问题,一次一个级别(异常也会做同样的事情,只是自动化程度更高)。
但是,这样做可能不是一个好主意。假设您突然需要从 quux
调用 baz.bar()
,而根本没有触及 foo
。如果 bar
尝试返回不在调用堆栈中的 foo
,现在会发生什么?如果你只是想让它上升N级,你能想象如果将foofoofoo
合并到foofoo
中,或者改变它添加一个foofoofoofoo可能会发生的问题
,不记得修改bar
?
异常听起来就像是完成这项工作的正确工具:baz.bar()
不应该关心它必须转到 foo
,它应该知道一些事情exceptional 已经发生,要求它中止它正在做的事情,然后 foo
应该知道这种异常情况可能发生并处理它(即使它只是什么都不做是这种情况).如果要避免必须向所有内容添加 throws 子句,请改用未经检查的异常。
关于Java返回到调用栈中的位置N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2769299/