예외를 처리하는 방법 : try-catch문(직접 처리), 예외 선언하기(예외 떠넘기기(알리기))
예외 선언하기
- 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것
(checked 예외만 선언하는 것이 정석임)
- 메소드가 try-catch문을 사용하여 예외처리 하지 않고 자신을 호출한 메소드에 예외를 넘긴다(checked 예외의 경우 throws 사용)
- 예외가 main method에서도 처리되지 않으면 main이 예외를 JVM에 넘겨주고, JVM의 기본 예외처리기가 예외 처리 후 에러 출력
static void startInstall() throws SpaceException, MemoryException {
if(!enoughSpace())
throw new SpaceException("설치할 공간이 부족합니다.");
if(!enoughMemory())
throw new MemoryException("메모리가 부족합니다.");
}
- '작업을 시킨 메소드가 예외 처리하는 것이 맞는 것인지'
vs '작업을 수행하는 메소드가 예외 처리하는 것이 맞는지'에 따라 try-catch를 어디에 넣을지 결정하면 된다.
finally 블럭
- 예외 발생여부와 관계없이 수행되어야 하는 코드를 넣는다.
- try와 catch에 중복된 코드를 제거할 수 있음