try 구문이 정상적으로 실행되건, 예외 오류가 발생되건 결과와 상관 없이 finally 로 설정한 구문은 반드시 실행된다.
보통 Finally 구문은 try 내에서 작업하던 내용을 정리할 때 사용한다.
(Ex. 파일을 열었다면 Finally를 통해 파일을 닫는다. / 임시파일을 생성하였다면 Finally를 통해 임시파일을 삭제한다.)
Try 구문은 아래와 같이 여러 유형으로 생성할 수 있다.
* try + catch / try + catch + finally / try+ finally
아래와 같이 catch 구문 없이 try + finally 유형으로도 생성할 수 있는 점을 참고하자.
임시 파일을 쓰는 클래스를 만들어 예시를 학습해보자.
위와 같이 MyFileWirter 객체를 생성하여 파일에 내용을 입력하고 최종적으로는 MyFileWriter.close() 메소드를 통해 파일을 닫는다.
이 때 finally 구문 내에서 writer.clos() 메소드를 실행할 때에도 오류가 발생될 수 있으므로 finally 구문 내에 try - catch 구문을 생성할 수도 있다.
여기서 finally 구문을 이용하지 않더라도 .close() 메소드가 자동으로 실행되도록 만들 수도 있다.
try 구문 내에서 사용할 리소스(파일, 객체)를 괄호 속에서 생성하게 되면 try catch 구문을 빠져나올 때 자동으로 close() 메소드를 호출해준다.
이를 try with resources 라고 한다.
이 때 try with resources를 사용하기 위한 조건이 있다.
위와 같이 AutoCloseable로 선언되어 있어야만 .close() 메소드를 자동으로 호출 할 수 있다.
'Spec UP - Backend > 나도코딩의 자바기본편' 카테고리의 다른 글
chap_11. 예외처리미루기(Throws) (0) | 2023.07.10 |
---|---|
chap_11. 사용자 정의 예외 (0) | 2023.07.10 |
chap_11. 예외처리 (Try Catch) / 예외발생시키기(Throw) (0) | 2023.07.10 |
chap_10. Stream (0) | 2023.07.06 |
chap_10. 람다식과 함수형 인터페이스 (0) | 2023.07.04 |
댓글