본문 바로가기

컴퓨터공학/Java

CS> try catch에서 System.exit 부르면 어떻게 될까? finally 이 실행될까?

참고로 catch는 exception의 종류에 따라서 여러 가지 설정할 수 있다.

보통 finally는 database connection이나 열려있는 stream을 종료할 때 사용되는 영역이다. 

 

System.exit(0) 프로그램을 종료한다. 

따라서 try catch 안에 있으면 finally가 실행되기 전에 프로그램이 종료되어서 finally는 실행되지 않는다.

만약 try catch 안에 return이 있으면 어떻게 될까?

return은 해당 block을 빠져나가는 것일 뿐 프로세스가 종료되지 않는다.

따라서 위의 경우에는 try가 실행되고 exception이 없으면 fianlly가 실행된 다음 method를 종료하게 된다.

 

다른 예시를 보며 이해하자.

 

정리

finally는 error와 상관없이 항상 실행된다. 그래서 주로 resource release로 사용된다.

system.exit() 은 프로그램을 종료하는 것이므로 finally가 실행이 안된다.

return이 있으면 finally 실행 잘 된다.