jsp 디버깅(벌레 잡기)
kenu 2001-04-26 10:47오후 |
속보, NullPointerException 출현!
|
설레는 마음으로 jsp 코드를 힘겹게 위치시킨 후에 브라우저에서 확인했을 때... NullPointerException 이라니.... 하지만 여기서 얻을 수 있는 정보가 있습니다. 10줄 가량의 에러메시지 가운데 신경써서 볼 부분은 맨 위의 2~3줄만 보면 됩니다.
|
일단 파일의 이름이 nohello.jsp 라는 것을 알 수 있습니다. 위치는 / 루트에 있죠.
|
다음으로 에러가 발생한 라인 번호도 나옵니다. 여기에선 8이죠. 그럼 소스가 아무리 길더라도 그 라인만 찾아 가서 약을 뿌리면 벌레를 잡을 수 있다는 것입니다. 소스를 보시죠.
|
8번째 줄을 보시면 str 변수의 길이를 출력하도록 한 코드입니다. 물론 위에서 str 에 null 을 대입했기 때문에, null 의 길이를 묻는다면 jvm이 "michin Num" 이라는 뜻으로 NullPointerException을 보냅니다. 주로 인스턴스(변수 포함해서 conn 이나 rs, stmt 등의 sql 객체들)가 null 인 상태에서 메소드(길이를 묻거나 값을 요구하거나 등등)를 사용하면 NullPointerException 이 나오게 됩니다.
|
그럼 이제 str의 값에 null 대신에 "Hello" 라고 집어넣죠. 그리고 다시 불러보면 5라고 나올겁니다.
|
파일 두개를 만들어 보겠습니다. 입력 폼에서 집어넣은 값을 다음에 출력하는 것이죠. 만일 처음 값에 아무 것도 넣지 않으면 null 이 들어가게 됩니다. 소스를 보시죠.
|
|
브라우저에서 http://localhost/nohello.htm 을 부른 뒤에 3글자 이상을 입력하고 전송을 하면 잘 나옵니다. 하지만 반대의 경우 어떤 에러가 날까요?
|
이 경우 에러를 보기가 힘듭니다. 2패거리가 나오니까요. 에러메시지는 String index out of range : 3 라고 나오죠. 밑에 줄을 봐도 라인 넘버가 나오질 않습니다. 그럼 어떻할까요. 실마리는 표시해 둔 곳의 substring 에 있습니다. substring method 에서 에러가 발생되었다는 것이죠.
|
이런 경우 조건을 걸어주시는 것이 좋습니다. 이렇게 말이죠. 이만 강좌를 마치겠습니다. 휘리릭~
|
관련 사이트
|