我的Java代码中的顺序抛出声明

时间:2018-02-10 22:12:27

标签: java exception exception-handling

'大家好!我有一个关于Java中的异常处理的问题。如果有连续的“抛出”声明,为什么会首先启动什么?以下是类似方法的示例:

public void myMethod(boolean ok) {
    if (ok) {
        // do something...
    } else {
        throw new myRuntimeException();
        throw new RuntimeException ();
    }
}

提前致谢!

2 个答案:

答案 0 :(得分:0)

大多数编译器会将第二个“throw”标记为错误:“无法访问的代码” - 因为它永远不会被执行。

这就像在返回后编写代码(除了finally块) - 它永远不会被执行 - 因此是非法的。

答案 1 :(得分:0)

一旦throw,执行流程就会中断,并发生以下情况:

  • 如果您在try区域内,则会转到相应的catch
  • 如果没有,Throwable(在您的情况下为例外)将在调用链中向上传递,离开myMethod()并转到调用它的方法

重复此过程,直到您到达try块或调用堆栈的顶部,在这种情况下,您的程序将终止。

因此,只抛出第一个异常,永远不会达到throw new RuntimeException ();语句。