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

조회수 3041회

소스코드

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으로 캐스팅이되는거죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)