2008-09-17 3 views

답변

2

불완전한 파일은 분명히 볼 수있는 곳입니다. 파서로 보내지는 것을보기 위해 파싱하기 직전에 파일을 출력 할 것입니다. 그것이 불완전한 경우에 그것은 명백 할 것이다. 그것이 유효하지 않은 경우, 당신은 할 약간의 검색을해야합니다.

+0

댓글을 주셔서 감사합니다. –

1

NPE가 던져지는 위치를 가리키는 스택 추적이 있어야합니다. 그것은 null이 될 수있는 변수의 수를 줄여야합니다. 디버거 나 printf를 얻는 대신 오류를 감지하자마자 적절한 검사를 추가하고 예외를 던질 것을 제안합니다. 나중에 신비한 문제를 피하는 것이 좋은 습관입니다.

+0

코멘트 주셔서 감사합니다! 불행히도 그것들은 Java EAI 애플리케이션의 독점적 인 메소드이므로 소스를 수정할 수 없습니다. –

1

디버거 내부에서 Java 응용 프로그램을 실행하는 것이 이상적입니다. 따라서 캐치되지 않은 예외가 발생하면 콜 스택, 변수 등을 검사하여 충돌을 일으킨 행이 무엇인지, 그리고 어떤 데이터가 사용 된 null인지 정확하게 확인할 수 있습니다. .

어떤 이유로 든 디버거를 사용할 수 없으면 디버깅 지원을 사용하여 응용 프로그램을 컴파일하고이 특정 오류에 대한 예외 처리기를 추가하고 스택 추적을 인쇄하십시오. 다시 말하지만, 어떤 파일에서 충돌이 발생했는지 정확히 알 수 있습니다.

+0

불행히도 나는 둘 다 할 수 없으며 독점적 인 응용 프로그램이므로 코드에 액세스 할 수 없으며 꽤 유산이기 때문에 거의 지원되지 않습니다. –

2

첫 번째 추측은 DOM을 사용하는 코드가 DTD에서 선택 사항으로 표시되어있는 요소를 의무적으로 취급한다는 것입니다.

덧붙여 편집 : DTD에 대해 유효성을 검사하지 않으면 다음과 같은 (예 : dom4j를 사용하여) null을 반환 할 수 없습니다.

doc.selectSingleNode("//some/element/in/a/structure"); 

요소 탐색 호출을 함께 스트링하거나 일반적으로 사용하기 전에 반환 값을 확인하지 않는 경우에도 마찬가지입니다.

+0

코멘트를 감사드립니다! 그것에 대해 정교한 마음? –

관련 문제