자바에서 예외처리할때 왜 throw null;이 가능한거죠?


소스코드

public class WhatTheShoot {

    public static void main(String args[]){
        try {
            throw null;
        } catch (Exception e){
            System.out.println(e instanceof NullPointerException);
            System.out.println(e instanceof FileNotFoundException);
        }
    }
}

위 코드를 런하면

true  
false

라는 결과가 나오는데요. 컴파일에러가 날줄 알았는데 잘 컴파일이 되서 신기했어요. 왜 자바에서는 null을 예외로 던질수가 있는거죠? 그리고 왜 그게 NullPointerException으로 캐스팅이되는거죠?

  • 2016년 01월 18일에 작성됨

조회수 203


1 답변


좋아요
0
싫어요
채택취소하기

null이 NullPointerException으로 처리되는것처럼 보이지만 아닙니다. null이 NullPointerException으로 캐스팅되는 것처럼 보이는 이유는 throw null이라는 코드자체가 NullPointerException을 throw하는 결과를 부르기 때문입니다.

다시말해서 throw는 인자가 null이 아닌지 맞는지를 체크하고 그게 null이었을때 NullPointerException을 throw하는 것입니다.

  • 2016년 01월 18일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close