Java代码中的顺序抛出声明

Java代码中的顺序抛出声明,java,exception,exception-handling,Java,Exception,Exception Handling,“大家好!我有一个关于Java中异常处理的问题。如果有顺序的“抛出”声明,首先启动什么?为什么?下面是这样一个方法的示例: public void myMethod(boolean ok) { if (ok) { // do something... } else { throw new myRuntimeException(); throw new RuntimeException (); } } 提前谢谢 大多数编译器

“大家好!我有一个关于Java中异常处理的问题。如果有顺序的“抛出”声明,首先启动什么?为什么?下面是这样一个方法的示例:

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

提前谢谢

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


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

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

  • 如果您在
    try
    块中,它将转到相应的
    catch
  • 如果不是,则可丢弃(在您的情况下是例外)将向上传递到调用链,留下
    myMethod()
    并转到调用它的方法
重复此过程,直到到达
try
块或调用堆栈顶部,在这种情况下,程序将终止


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

您的方法以第一个
throw
s子句结束。但这不是火箭科学,只是尝试一下。这不是有效的Java代码。它不编译.make。因此,询问它如何执行是徒劳的。在Java中,编写无法访问的代码是一个错误。