Java返回到调用栈中的位置N

标签 java return callstack

在 Java 代码中使用 return 关键字会将执行返回到调用堆栈中的最后一段调用代码。如果对象foo调用baz.bar()bar方法中的return关键字会继续执行代码foo.

假设我有对象 foo 调用 foofoo 在上面的场景中调用 foofoofoofoofoofoo调用 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/

相关文章:

java - 为什么在 java-8 stream reduce 操作中不执行 combiner 函数?

c# - 如何在 bool 方法上解析 "not all code paths return a value"?

javascript - XMLHttpRequest - 在 console.log 中返回数据,但不在函数返回中返回数据

python - 根据输入标志返回不同变量的优雅方式

java - 如何避免堆栈堆积?

c++ - 如何使 StackWalk64() 在 x64 上成功运行?

java - 设置 (PNG) 位图颜色而不是逐像素设置的更快方法

java - 如何在 Java 中将每个 n,2n,3n.. 字符添加到字符串中

java - 在 Cassandra 2+ 中存储简单的键值对

javascript - 如何捕捉 "Maximum call stack size exceeded"错误?