JAVA에서 NullPointerException 에 대해 질문을 드릴게요
글쓴이: anaud2 / 작성시간: 수, 2008/11/05 - 11:28오전
안녕하세요
java로 특정 함수를 만들고 있는데요
public static int auth(String ID,String PW) throws IOException, SocketException, ValueException //ValueException은 만든 예외클래스로 IOException을 상송받는다. { if(IP.equals("") || ID == null){ throw new ValueException("IP null"); //특정 요인에 맞으면 예외를 발생시키기 위해 만들었다. } //중략 main(){ //중략 try{ i = auth_test.auth(null, "123456"); }catch(IOException e){ e.printStackTrace(); } }
제가 생각했을때는 사용자가 null을 인자값으로 넣었을때도 제가 만든 예외가 발생하게 하고 싶은데요 막상 해보니까
NullPointerException이 발생을 합니다.
}catch(NullPointerException e){ e.printStackTrace(); }
위처럼 catch를 해주면 되긴하는데...그건 제가 바라는게 아니라서요...
if문에서 ID == null이 된다고 생각을 했는데..if문에서 걸리질 않네요 C에서는 되는데 null인자가 넘어온걸 어떻게 잡아내면 될까요?
Forums:
ID == null
ID == null 됩니다.
문제는 IP.equals("") 에서 IP 가 null이면 NullPointerException이 발생하겠네요.
--
Emerging the World!
Emerging the World!
일단 위에서 IP는 ID의
일단 위에서 IP는 ID의 오타로 보이는군요.
조금만 부연하자면, 논리연산자로 엮인 논리식은 경우에 따라서 다 평가하지 않습니다.
short circuit라고 불리는데,
AND로 묶인 것들은 앞에서 부터 평가하다가 최초 false가 나오는 순간 전체 논리식이 false가 됩니다.
OR로 묶이면? 최초 true를 만나면 전체 식이 true가 됩니다.
예시하신 논리식
은 전형적인 나쁜 스타일입니다 (object의 method를 null 검사 전에 부르는 것은 아주 안좋은 스타일입니다).
다음 둘중에 하나로 고치시면 됩니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
고맙습니다.
정말 새로운 내용을 알게되었네요 고맙습니다.^^
저 같은 경우는...
위의 M.W Park님 의견에 동감합니다.
실제 존재하지 않는 주소에 우편물을 보내는 부분과 주소지는 존재하나 주인(?)이 수신자가 맞는지 부분만을 놓고 봤을때 checking priority 는 전자가 되어야 겠지요. 쓰고보니 위 reference 관련 표현이 이상하긴 하네요. :)
저같은 경우는 통상적으로(특수환경 제외) Util Class를 만들어 처리하고 있습니다.
오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.
--오늘도 For() 와 If()로 나의 하루는 시작되고 끝난다.
아 말씀하신 방법도 좋네요
함수로 처리하는부분도 코드가 상당히 깔끔해지네요 좋은정보 감사합니다.
댓글 달기