try-catch 구문을 공부하다 try-with-resources라는 것을 알게 되었다.
java7부터 제공한다고 한다.
InputStream과 OutputStream을 사용할때 보통 finally 구문을 통해 안정적으로 해제하고 있다. 예를 들면,
public static void main(String[] args){
int[] arr = new int[3];
try{
System.out.println(arr[3]);
System.out.println(arr[2]);
} catch(ArrayIndexOutOfBoundsException e){
System.out.println("오류발생");
}finally{
System.out.println("finally...");
}
}
이런식으로 사용한다.
try-with-resources 같은경우는 finally를 통해 해제해줄 필요가 없다. try에 할당된 자원이 Exception 발생시에 자동으로 해제 된다.
try(resource.........; resource...........){ }catch(exception e){ ... }
요런식으로 사용한다.
예제 코드는 다음과 같다.
public static void main(String[] args){
try(InputStream is = new FileInputStream("fileName");
OutputStream os = new FileOutputStream("fileName")){
}catch(IOException e){
System.out.println("Exception 발생!");
}
}