[Java] throws 키워드

김주원·2020년 7월 18일
0

Java

목록 보기
2/2
post-thumbnail

들어가기에 앞서

게시물 내용은 필자가 공부하기 위해 작성한 내용이기 때문에 오류 사항이 있을 수 있다.

throws 키워드

public static void function() throws Exception {
    String a = null;
    System.out.println(a.length());
}

메소드 선언시 붙일 수 있는 throws 키워드는, 해당 메소드에서 Exception이 발생하였을때 그에 대한 처리를 caller 메소드로 위임한다.
(caller - 호출자, callee - 피호출자)

예시

가령 다음과 같이 main() 메소드에서 function() 메소드를 호출할 때, function() 메소드가 throws 키워드가 없는 상태이면 컴파일 오류가 발생하지 않고 function() 메소드와 main() 메소드 차례로 런타임 Exception이 발생한다.

public class Main {
    public static void function() {
        String a = null;
        System.out.println(a.length());
    }

    public static void main(String[] args) {
        Main.function();
    }
}

하지만 다음과 같이 function() 메소드에 throws 키워드와 원하는 Exception을 작성해주면 caller에서 Exception이 핸들링 되지 않았다며 컴파일 오류가 발생한다.
왜냐하면 Exception에 대한 처리를 Caller로 위임했기 때문이다.

public class Main {
    public static void function() throws Exception {
        String a = null;
        System.out.println(a.length());
    }

    public static void main(String[] args) {
        Main.function();
    }
}

따라서 caller인 main() 메소드에서 Exception 처리를 해주어야 한다.

만약 callee에서 throw할 Exception이 여러개라면 콤마(,)를 기준으로 나열해주면 된다.

public class Main {
    public static void function() throws NullPointerException, NumberFormatException {
        // do something
    }

    public static void main(String[] args) {
        Main.function();
    }
}
profile
자기계발 블로그

0개의 댓글