2012-10-19 3 views
0

Series 40 플랫폼 용 Java ME 응용 프로그램을 만들었습니다. 응용 프로그램은 에뮬레이터에서 완벽하게 실행되지만 내 자체 40 시리즈 전화로 패키지하면 NullPointerException으로 앱이 실패합니다. 거의 모든 내 코드가 배열을 처리하므로 전화기의 오류 보고서에 세부 정보가 포함되어 있지 않기 때문에 오류가 발생한 위치를 알기가 매우 어렵습니다.전화에서 Nokia Series 40 Java ME 용 Java 응용 프로그램 디버그

그럼의 앱을 디버그 할 수 있습니까? (누군가가 전화 상으로는 앱이 실패하는 이유를 생각할 수는 있지만 에뮬레이터가 아닙니다. 공유 해주세요.)

답변

3

JavaME의 많은 규칙 중 하나는 " 항상 에뮬레이터를 신뢰하지 말고 항상 여러 실제 장치에서 테스트하십시오. "

NullPointerExceptions은 찾기가 까다 롭지 만 불가능하지는 않습니다. 나는 단순히 장치에 오류 메시지를 출력하여 여러 번했습니다.

String error = null; 
Image myImage = null; 

try { 
    myImage = Image.createImage("someImage.png"); 
} catch (Exception e) { 
    error = "Failed to load someImage.png: " + e.toString(); 
} 

그런 다음 메인 루프에서 (캔버스/GameCanvas를 물건에 대한),

if (error!=null) g.drawString(error,0,0,0); 

이 그럼 당신은 객체를 생성하는 whereever, 코드에서 시도/catch 블록을 많이 삽입 시작 않습니다.

위 myimage을로드하지 않은 경우 예외가 발생되고있는 블록을 식별하기 위해

g.drawImage(myImage,0,0,0); 
+0

화려한 대답! 고맙습니다. SO에 오신 것을 환영합니다. (막 구현하기 시작합니다.) – ACarter

1

하려고 할 때, 당신은 당신이 시도의 가능성이 영역을 포장 할 수는 NullPointerException를 얻을 수 있습니다/잡기. NullPointerException을 잡아 내고 범위를 좁히는 데 도움이되는보다 명확한 예외를 throw하십시오. 그래서 ArithmeticException을 던질 수 있습니다.

관련 문제