我有一個問題System.exit(0);
。 當我嘗試下面的代碼輸出是什麼,因爲System.exit(0);
:System.exit(0)不會阻止最終被調用時SecurityManager.checkExit拋出異常
String number = "12345M";
try {
System.exit(0);
} catch (Exception e) {
System.out.println("Exception caught");
} finally {
System.out.println("inside finally");
}
但是,當我嘗試這樣做下面的代碼:
System.setSecurityManager(new SecurityManager() {
@Override
public void checkExit(int status) {
throw new ThreadDeath();
}
});
try {
System.exit(0);
} finally {
System.out.println("I am finally block");
}
是輸出:
我終於塊
有人可以請解釋這種不同的行爲?
不能阻止最終被調用。 –