728x90
반응형
try-with-resource문은 무엇인가?
자바7은 try/catch/finally문과 함께 유용하게 사용할 수 있는 문법을 제공한다.
AutoCloseable 인터페이스를 구현한 FilReader 클래스를 이용하면 아래와 같이 자원 종료를 걱정할 필요가 없다.
=> 자원 해제 자동처리 기능
public void resourceHandling(){
try(final FileReader reader = new FileReader("/test/test.txt")){
final char[] buffer = new char[128];
reader.read(buffer);
}catch(IOException e){
}
}
try-with-resources문이 도입되기 전에는 reader 인스턴스를 명시적으로 종료해야 했다. 그렇지 않으면 예외를 발생시키거나 종료되지 않거나 종료를 잊었을 때 이상한 동작을 하게 된다.
=> 이전에는 자원을 생성, 사용하고 해제하는 코드는 항상 finally를 이용해서 close()를 시키는 구조가 중복되는 코드를 작성해야 했지만, 자바7에서 try-width-resources가 추가되면서 try코드 블록이 끝나면 자동으로 자원을 종료해주는 기능이 생겼다.
멀티캐치(multicatch)문
예외처리를 할 때 만약 아래와같이 ABC checkedException을 던지는 메소드를 선언했을때, ABC Exception에 대한 예외를 3개의 catch문으로 처리하여야했다.
try{
method();
}catch(AException e){
do(e);
}catch(BException e){
do(e);
}catch(CException e){
any(e);
}
이렇게 되면 A, B Exception에 대한 중복코드가 발생하는데 multicatch문을 사용하면 중복코드를 없앨 수 있다.
try{
method();
}catch(AException | BException e){
do(e);
}catch(CException e){
any(e);
}
catch블록에서 여러 개의 예외를 잡을 수 있다는 의미로 멀티캐치(multicatch)라고 하며, 유용한 기능이다.
728x90
반응형
'프로그래밍 노트 > JAVA' 카테고리의 다른 글
[JAVA] 컬렉션프레임워크(CollectionFramework) 2 (0) | 2018.08.13 |
---|---|
[JAVA] 네트워크 프로그래밍 TCP 소켓 통신 (5) | 2018.07.08 |
[JAVA] 컬렉션프레임워크(CollectionFramework) 1 (0) | 2018.07.02 |
[JAVA] JVM 메모리구조 (0) | 2018.06.29 |
[JAVA] RSA를 이용한 전자서명 및 복호화 (0) | 2018.06.13 |