강제적으로 JVM을 종료시키고 싶을 때는 System 클래스의 exit() 메서드를 호출하면 된다.
✔️ exit()
- 현재 실행하고 있는 프로세스를 강제 종료시키는 역할을 한다.
- int 매개값을 지정하도록 되어 있는데 이 값을 종료 상태값이라고 한다.
❗️ 정상종료: 0
❗️ 비정상종료: 0외의 다른 값
System.exit(0); //정상종료
System.exit(1); //비정상종료
System.exit()메서드는 어떤 값을 주더라도 종료가 된다.
🤔 만약 특정 값이 입력되었을 경우에만 종료하고 싶다면 ❓
- 자바 보안 관리자를 직접 설정해서 종료 상태값을 확인하자
System.exit()가 실행되면 보안관리를 입력되지 않으면 SecurityException
을 발생시켜 System.exit()를 호출한 곳에서 예외 처리를 할 수 있도록 해준다.
checkExit()
가 정상적으로 실행되면 JVM은 종료된다.
public class ExitExample {
public static void main(String[] args) {
//종료 상태 값으로 5가 입력되면 JVM을 종료하도록 보안관리자를 설정
System.setSecurityManager(new SecurityManager() {
@Override
public void checkExit(int status) {
if(status != 5) {
throw new SecurityException(); // status가 5가되면 프로세스 종료
} else {
System.out.println("시스템 종료!");
}
}
});
for(int i=0; i<10; i++) {
System.out.println(i);
try { //try catch문 미 실행 시 오류
System.exit(i); // i 가 5가 될때 프로세스 종료
} catch(SecurityException e) {}
}
}
}
0
1
2
3
4
5
시스템 종료!
References
: https://altongmon.tistory.com/205