자바 예외 처리 방법인 finally키워드에 대해서 알아보자.
finally 키워드
finally키워드 블록은 예외의 발생여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용된다. try-catch문의 끝에 선택적으로 덧붙여 사용될 수 있으며, try-catch-finally의 순서로 구성된다.
예외가 발생한 경우에는 try-catch-finally로 실행되며, 예외가 발생하지 않은 경우에는 try-finally로 실행된다.
코드가 try문에서도 정상적으로 마쳐도 실행되어야 하거나, 예외가 발생해도 실행되어야 할때, finally에서 코드를 정의해 주는것이 좋다.
a/b01에서 ArithmeticException 예외가 발생하므로 예외발생1이 출력되고, finally 블록이 실행된다.
try-with-resources 문장
자원은 프로그램이 종료되면 반드시 close()메소드로 닫혀져야 한다. 하지만 try-with-resources 문을 사용하면 문장의 끝에서 자원들이 자동으로 닫혀지게 된다.
형식은 try(리소스 자료형1 변수명1=초기값; 리소스자료형2 변수명2=초기값2;...){실행문장} 이다.
try다음에 소괄호가 나오면 리소스로 취급한다. try-with-resources 문으로 선언되면 try문장이 정상적으로 종료되건 예외가 발생하건 간에 무조건 닫혀진다. 즉 finally문에서 close()메소드로 명시적으로 닫지 않아도 자동으로 닫혀진다.
이 기능을 사용하려면 자원 객체가 java.lang.AutoCloseable인터페이스를 구현하고 있어야 한다.
해당 코드는 cityList로 String만 저장할 수 있는 ArrayList 컬렉션을 생성한다. 배열 원소값을 추가하고, try 문에 PrintWriter 타입 output 참조변수를 생성하고, 생성자를 호출해 result.txt에 for문의 cityList를 영문대문자로 기록한다. 해당 PrintWriter는 7에서 추가된 AutoCloseable인터페이스를 구현상속 받았기 때문에 try()내에서 객체를 생성하면 finally 문에서 명시적 코드 close()를 안해도 자동으로 닫힌다.
'언어공부 > Java' 카테고리의 다른 글
자바-InputStream과 OutputStream (0) | 2021.06.04 |
---|---|
자바 - 입출력(I/O), 스트림(stream), 바이트 기반 스트림(InputStream, OutputStream), 문자(텍스트) 기반 스트림(Reader, Writer) (0) | 2021.06.04 |
자바 예외 처리 방법 - throw 키워드, throws 키워드, 사용자 정의 예외 (0) | 2021.06.03 |
자바 예외 처리 방법 - try-catch문, printStackTrace()와 getMessage() (0) | 2021.06.03 |
자바 프로그램 오류 및 Exception과 RuntimeException (0) | 2021.06.02 |