Java的System.exit()如何与try/catch/finally块一起工作?
2022-08-31 11:38:24
我知道在 try/catch/finally 块中返回的头痛问题 - 在 final 中的返回始终是方法的返回的情况下,即使 try 或 catch 块中的返回应该是执行的那个。
但是,这同样适用于 System.exit() 吗?例如,如果我有一个 try 块:
try {
//Code
System.exit(0)
}
catch (Exception ex) {
//Log the exception
}
finally {
System.exit(1)
}
如果没有异常,将调用哪个 System.exit()?如果 exit 是一个 return 语句,则将始终调用 System.exit(1) 行。但是,我不确定退出的行为是否与返回不同。
代码处于一个极端情况下,很难(如果不是不可能)重现,所以我不能编写单元测试。如果我有几分钟空闲时间,我将尝试在今天晚些时候运行一个实验,但我还是很好奇,也许SO上的某个人知道答案,并且可以在我无法运行实验之前或万一我无法运行实验的情况下提供它。