java7 Exception

java의 예외처리 내용이 햇갈려서 간만에 java책을 들여다보니 내가 몰랏던 기능들이 있어서 정리해 본다.

1.멀티 catch 구문 a.하나의 catch 블록에서 여러개의 Exception을 잡아서 처리하는 구문이다.

예제1-a

1
2
3
4
5
try{
// ...
}catch(AException a | BException b){
//...
}

자바 7부터 추가된 기능이라고 한다.

자동리소스 닫기(try-with-resources)

a.기존의 try-catch-finally 로 처리하던 관용적인 리소스(db 커넥션, 소켓 등등) 반납 로직을 간편하게 처리하기 위해 나온듯 하다.

b.자동리소스 닫기(try-with-resources)는 코드의 예외 발생 여부와 상관 없이 사용중인 리소스 (각종 입출력 스트림, 서버소켓, 소켓, 각종 채널)의 close() 메소드를 자동으로 호출하여 안전하게 리소스를 반납해준다.

예제 2-b

1
2
3
4
5
6
7
8
9
10
11
try(AStream as = new AStream()){
// 한개의 리소스 사용시
}catch(IOException e){
//...
}

try(AStream as = new AStream(); BStream as = new BStream();){
// 복수 개의 리소스 사용시
}catch(IOException e){
//...
}

기존의 finally를 이용하여 리소스를 클로즈 하는 행위를 자동으로 처리해주는 편리하느 기능이라고 생각 된다.

c. 자동리소스 닫기(try-with-resources)를 사용하기 위해서는 조건이 있다. AutoCloseable이라는 인터페이스를 구현한 리소스객체만 자동리소스 닫기(try-with-resources)를 적용 할 수 있다