System.exit,最后是代码分析

Lat*_*thy 2 java

请帮我理解下面的代码,

情况1:

finally{
    return;
    System.exit(1);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出编译时错误:

无法访问的代码

案例2:

finally{
    System.exit(1);
    return;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不会抛出任何编译/运行时错误,但是当我运行程序时只退出.

我的问题在于为什么设计人员想在案例1中抛出编译时错误,而在案例2中他们没有.实际上,当您调用System.exit(0)时,程序将终止,这意味着它下面的代码无法访问.

lan*_*ava 5

return是编译器知道的语言功能.System.exit(1)被编译器视为静态方法调用,类似于System.out.println(...).编译器不知道调用此方法实际上做了什么.