역전의캐리어
16
2019-09-03 23:45:30
7
228

nullpointexception 질문 드립니다.


method( map<String, String> ojt ) // 파라미터로 null 이 들어옵니다.

{

  if( ojt != null && ojt.getPro("oneday") != null ) // <---- 여기서 nullpointexception 이 나옴

  {

      // 할일

  } else {

      // 할일

  }

}


위에 표시된 곳에서 nullpointexception 이 나는데 ojt 가 null 로 들어오면 ojt!=null 여기서 바로 통과 될텐데 왜 exception 이 나는 걸까요?

0
0
  • 답변 7

  • fender
    14k
    2019-09-04 06:41:19

    스택트레이스를 잘못 읽으셨거나 구동 중인 클래스가 해당 소스가 아닌 경우가 아닐까요?

    0
  • 유리세계
    2k
    2019-09-04 09:42:03
     if( ojt != null && ojt.getPro("oneday") != null )

    여기 조건문을 보시면 ojt != null 만 보고 걸러지는게 아니라

    ojt.getPro("oneday") != null 도 확인이 되어야 조건문을 판단할 수 있는겁니다

    결국 ojt != null 은 통과되어도 ojt.getPro("oneday") 에서 nullpointException 이 발생하는거죠


    null 검사를 먼저하시고 파라미터를 검사하시면 에러가 나지 않으실 겁니다

    1
  • fender
    14k
    2019-09-04 10:02:28 작성 2019-09-04 10:02:49 수정됨

    유리세계 // `ojt`가 널값이 아닌 경우 `ojt.getPro("...") 구문에서는 널포인터 예외가 발생할 수 없습니다.

    해당 메서드 내부에서 문제가 발생할 수는 있습니다만, 그 경우는 본문의 코드가 아닌 메서드 구현 코드를 봐야하겠죠. 그래서 스택트레이스 확인을 언급했습니다.

    0
  • 유리세계
    2k
    2019-09-04 10:12:36

    fender

    엇 그렇네요...

    직접해보니까

    조건문의 and 절로 되어있을때는 널포인터가 발생하지 않네요...

    or 절로 되어있는 경우는 나는데...

    0
  • 역전의캐리어
    16
    2019-09-04 18:53:05

    fender

    구동중인 클래스가 해당 소스는 맞습니다.

    스택트레이스를 보니 위에 표시된곳에서 널포인트 오류 나는것도 확인 했구요

    와 진짜 모르겠네요 ㅠㅠ 나중에 해결되면 답 달아 놓겠습니다~

    0
  • fender
    14k
    2019-09-04 22:57:02

    스택트레이스를 보여주실 수 있나요?

    0
  • PRO그래머
    1k
    2019-09-05 01:26:30 작성 2019-09-05 01:29:44 수정됨

    if( ojt != null && ojt.getPro.equles("oneday") )

    를 하고싶으셨던거 아닐까요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.