try/catch/finally System.exit(0) 异常

try/catch/finally Exception with System.exit(0)

提问人:Martien ANGEL 提问时间:1/8/2023 最后编辑:Federico klez CullocaMartien ANGEL 更新时间:1/8/2023 访问量:77

问:

try {
    fruit fr = (fruit) p;
    System.exit(0);
} catch (Exception e) {
    System.out.println("not the right object");
} finally {
    System.out.println("finablock");
}
        

为什么在这种情况下没有终止操作,而我从 和 块中获得了两个显示器?System.exit(0)catchfinally

java 异常 nullpointerexception try-catch-finally

评论


答:

2赞 Turing85 1/8/2023 #1

如果抛出 an,则执行立即从周围的块返回,(重新)抛出 said。如果在遍历调用堆栈期间找到匹配的 -block,则执行此 -block,从这里开始,执行将恢复正常。调用堆栈上的所有 -block 都会按照遇到的顺序执行。ExceptionExceptioncatchcatchfinally

例如,这意味着如果

fruit fr = (fruit) p;

抛出一个 ,则不执行,但执行继续与 -块的主体一起执行。并且由于 的语义,此块在方法返回之前执行。ExceptionSystem.exit(0);catch (Exception e)finally


关于守则的一些评论:

  • java 中的类名应该写在UpperCamelCase (fruit fr = ... -> Fruit fr = ...)
  • 如果我们想异常终止应用程序,那么我们应该设置一个值,因为这是程序的退出代码。应用程序正常终止的信号值(很可能不为 true)System.exit(...)!= 00