Tôi gặp sự cố với System.exit(0);
. Khi tôi thử đoạn code bên dưới kết quả là không có gì vì System.exit(0);
:System.exit (0) không ngăn chặn cuối cùng được gọi khi có SecurityManager.checkExit ném một ngoại lệ
String number = "12345M";
try {
System.exit(0);
} catch (Exception e) {
System.out.println("Exception caught");
} finally {
System.out.println("inside finally");
}
Nhưng khi tôi cố gắng này bên dưới mã:
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");
}
Kết quả là:
Tôi cuối cùng chặn
Ai đó có thể hãy giải thích hành vi khác này?
Nếu System.exit() bị ngăn cản làm điều đó là công việc bạn nên mong đợi nó doesn 't ngăn chặn cuối cùng từ được gọi là. –