14. What will happen if you call System.exit on try or catch block ?
질문의 목적
- try/ catch 문에서 finally 블럭과
System.exit()
return
의 동작차이
try, catch and finally
- finally 블록은 에러 유무와 상관 없이 항상 실행된다.
- 그래서 데이터 베이스와 연결을 닫거나, 스트림을 닫는 로직을 넣는다
System.exit() on try, catch
- 소프트웨어적으로 프로세스의 동작을 완전히 멈추게 함(하드웨어로 굳이 비교하면 전원선을 뽑는 것 과 같다)
- try 나 catch 문 내에
system.exit()
을 쓰면 finally 블럭이 실행되지 않는다.
return statement on try, catch
- return 은 블록은 빠져나가고, 그 다음 블록이 실행된다.
- 에러가 발생해 catch에 걸려서
return
을 써도 해당 블럭을 빠져나온 후, finally 블럭이 실행된다.
Keyword
- finally block is executed regardless of error condition (에러 컨디션과 상관 없음)
- will not execute when it meets 'System.exit()'
- will execute when it meets 'return'