이클립스의 디버거
try-catch-(finally)
try 블록에서 발생된 예외를 catch 블록에서 처리한다.
try-with-resources
try 문장이 정상적으로 종료되건 예외가 발생하던 간에 무조건 리소스들이 자동으로 닫혀지게 한다.
close() 메소드 호출
자원 객체가 java.lang.autoCloseable 인터페이스를 구현하여야 한다.
장점 - 코드를 짧고 간결하게 만들어 읽기 쉽고 유지보수가 쉬워진다. try-catch에서처럼 실수로 close를 빼먹는 경우는 없다. 이것을 이용하면 이런 자잘한 버그들이 발생할 가능성이 적다.
public static void main(String args[]) {
try (CustomResource cr = new CustomResource()) {
cr.doSomething();
} catch (Exception e) {
e.printStackTrace(); //호출 스택의 내용 출력
System.out.println(e.toString());
System.out.println(e.getMessage()); //예외도 객체로 취급하여 Throwable 클래스를 상속받고, Throwable클래스의 메소드를 사용할 수 있다
}
}
private static class CustomResource implements AutoCloseable {
public void doSomething() {
System.out.println("Do something...");
}
@Override
public void close() throws Exception {
System.out.println("CustomResource.close() is called");
}
}
Error, RuntimeException, 기타 예외
Error
하드웨어의 오류. 애플리케이션 단에서는 에러를 보고할 뿐 처리할 수는 없다. 애플리케이션을 종료하는게 보통이다.