try-with-resources
- catch 구문 생략가능. finally안의 복잡한 try-catch를 해결하기 위해 나온 문법
try에 이어 등장하는 소괄호 안에서는(resource라고 쓰여 있는 위치에서는) 종료의 과정을 필요로 하는
리소스를 생성할 수 있다. 이 리소스는 try-with-resources 문을 빠져나오면서 자동으로 종료가 된다.
try ( resource ) {
. . .
}
catch ( Exception name ) {
. . .
}
java.lang.AutoCloseable
이 인터페이스는 try-with-resources문에 의해 자동으로 종료되어야 할 리소스 관련 클래스가 반드시 구현해야 하는 인터페이스이다.
이 인터페이스에는 다음 추상 메소드가 존재한다.
- void close() throws Exception
즉 try-with-resoureces문에서 호출하는 메소드는 AutoCloseable 인터페이스의 close 메소드이다.
따라서 close 이외의 메소드 호출은 하지 않는다.
둘 이상의 리소스에 대해서도 try-with-resources문을 구성할 수 있다.
세미콜론으로 리소스를 구분하면 된다.
try( resource1; resource2 ) {
. . .
}
catch(Exception name) {
. . .
}
※ try-with-resources문을 사용하면 코드가 훨씬 간결해진다.
※ try 구문 안에 위치한 코드는 try 구문 밖에 위치한 코드에 비해 실행 속도가 느리다.
따라서 과도한 예외처리는 성능의 저하로 이어질 수 있다.
-> 예외처리가 불필요한 코드를 try구문 안에 두는 일을 자제해야 한다.
모든 예외를 민감하게 처리하는 프로그램은 생각보다 많지 않다.
규모가 클수록, 성능이 중요시될수록 try~catch문 이외의 다양한 방법으로
그리고 선별적으로 예외를 처리한다.
[참고자료]
윤성우의 열혈 Java 프로그래밍
'Java > 기본' 카테고리의 다른 글
자바(Java) - JVM 구조 이해하기 (0) | 2021.05.24 |
---|---|
자바(Java) - JVM, JDK, JRE 차이점 이해하기 (0) | 2021.05.23 |
자바(Java) - 예외처리 (0) | 2020.03.01 |
자바(Java) - 추상 클래스 (0) | 2020.02.29 |
자바(Java) - 인터페이스 (0) | 2020.02.27 |