강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

jsp 에러잡기

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.gif title40.gif

jsp 디버깅(벌레 잡기)

kenu
2001-04-26 10:47오후


속보, NullPointerException 출현!
debug01_01.gif


설레는 마음으로 jsp 코드를 힘겹게 위치시킨 후에 브라우저에서 확인했을 때... NullPointerException 이라니.... 하지만 여기서 얻을 수 있는 정보가 있습니다. 10줄 가량의 에러메시지 가운데 신경써서 볼 부분은 맨 위의 2~3줄만 보면 됩니다.


일단 파일의 이름이 nohello.jsp 라는 것을 알 수 있습니다. 위치는 / 루트에 있죠.


다음으로 에러가 발생한 라인 번호도 나옵니다. 여기에선 8이죠. 그럼 소스가 아무리 길더라도 그 라인만 찾아 가서 약을 뿌리면 벌레를 잡을 수 있다는 것입니다. 소스를 보시죠.
debug01_02.gif


8번째 줄을 보시면 str 변수의 길이를 출력하도록 한 코드입니다. 물론 위에서 str 에 null 을 대입했기 때문에, null 의 길이를 묻는다면 jvm이 "michin Num" 이라는 뜻으로 NullPointerException을 보냅니다. 주로 인스턴스(변수 포함해서 conn 이나 rs, stmt 등의 sql 객체들)가 null 인 상태에서 메소드(길이를 묻거나 값을 요구하거나 등등)를 사용하면 NullPointerException 이 나오게 됩니다.


그럼 이제 str의 값에 null 대신에 "Hello" 라고 집어넣죠. 그리고 다시 불러보면 5라고 나올겁니다.


파일 두개를 만들어 보겠습니다. 입력 폼에서 집어넣은 값을 다음에 출력하는 것이죠. 만일 처음 값에 아무 것도 넣지 않으면 null 이 들어가게 됩니다. 소스를 보시죠.
debug01_03.gif



debug01_04.gif


브라우저에서 http://localhost/nohello.htm 을 부른 뒤에 3글자 이상을 입력하고 전송을 하면 잘 나옵니다. 하지만 반대의 경우 어떤 에러가 날까요?


이 경우 에러를 보기가 힘듭니다. 2패거리가 나오니까요. 에러메시지는 String index out of range : 3 라고 나오죠. 밑에 줄을 봐도 라인 넘버가 나오질 않습니다. 그럼 어떻할까요. 실마리는 표시해 둔 곳의 substring 에 있습니다. substring method 에서 에러가 발생되었다는 것이죠.
debug01_05.gif


이런 경우 조건을 걸어주시는 것이 좋습니다. 이렇게 말이죠. 이만 강좌를 마치겠습니다. 휘리릭~
debug01_06.gif


관련 사이트

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  124 명