finally절 : 예외가 발생하든 안하든 반드시 실행하고자 하는 명령문들을 실행시킨다.
finally는 try~catch절과 함께 사용할 수 있다.
▲ try~catch~finally를 사용하면 try절 실행 후 finally절이 실행되던지, catch절이 실행되고 finally절이 실행된다.
try~fianlly에서는 예외는 던지고 예외가 발생유무에 상관없이 finally절이 실행된다.
단, finally절 이전에 System.exit(0)이 있다면 프로그램이 종료되는 것이므로 finally절은 실행이 안된다.
▲try나 catch, finally는 단독으로 사용할 수 없다.
런타임예외(Unchecked error)는 반드시 마지막에서라도 try~catch절로 직접 처리해야한다.
컴파일예외(Checked error)는 예외를 던지거나 try~catch절로 잡아도 된다.
컴파일 예외 발생할 시
방법1) 던지기(throws)
방법2)try~catch
런타임 예외 발생하는 메소드
▲ 런타임 예외는 던지더라도 결국에는 try~catch로 잡아야한다.
위 코드에서는 finally까지 같이 사용해보았다. 만약 try절에 return이 있어도 finally은 예외가 발생유무와 상관없이 작동하기때문에 정상적으로 작동할 것이다. 하지만 finally절 이전에 System.exit(0)이 있다면 프로그램이 종료되는 것이므로 finally절은 실행이 안된다.
▲마지막으로 try~finally절을 사용해서 메소드를 만들어보았다. try절안에는 위에서 했던 complie()메소드를 넣어서 실행시키도록 하였으며 compile()메소드에서 방법2) 즉 try~catch를 하였다면 예외처리가 tryFinally()안에서 완료되기 때문에 finally절안의 코드는 무조건 실행될 것이다.
'Java' 카테고리의 다른 글
[Java]내부클래스 - part.2 내부 정적 클래스 (0) | 2022.03.22 |
---|---|
[Java]내부클래스 - part.1 내부 맴버 클래스 (0) | 2022.03.22 |
[Java]예외처리 - part3. throws (0) | 2022.03.21 |
[Java]예외처리 - part2. Catch절 (0) | 2022.03.21 |
[Java]예외처리 - part1. Basic (0) | 2022.03.21 |