Java me 在手机上调试适用于诺基亚40系列手机的Java ME应用程序

Java me 在手机上调试适用于诺基亚40系列手机的Java ME应用程序,java-me,nullpointerexception,nokia-s40,Java Me,Nullpointerexception,Nokia S40,我刚刚为Series 40平台创建了一个相当简单的JavaME应用程序。该应用程序在模拟器中运行良好,但当我将其打包到自己的40系列手机上时,该应用程序失败,出现NullPointerException。我几乎所有的代码都处理数组,因此很难判断错误发生在哪里,因为手机的错误报告中没有任何详细信息 那么如何在手机上调试应用程序?(如果有人能想出应用程序在手机上失败的任何原因,而不是模拟器(我真的被难倒了),请分享。)JavaME的众多经验法则之一是“永远不要相信模拟器-总是在多个真实设备上测试”

我刚刚为Series 40平台创建了一个相当简单的JavaME应用程序。该应用程序在模拟器中运行良好,但当我将其打包到自己的40系列手机上时,该应用程序失败,出现
NullPointerException
。我几乎所有的代码都处理数组,因此很难判断错误发生在哪里,因为手机的错误报告中没有任何详细信息


那么如何在手机上调试应用程序?(如果有人能想出应用程序在手机上失败的任何原因,而不是模拟器(我真的被难倒了),请分享。)

JavaME的众多经验法则之一是“永远不要相信模拟器-总是在多个真实设备上测试”

NullPointerException是最难定位的异常,但并非不可能。我已经做过很多次了,只需在设备上输出一条错误消息

String error = null;
Image myImage = null;

try {
    myImage = Image.createImage("someImage.png");
} catch (Exception e) {
    error = "Failed to load someImage.png: " + e.toString();
}
然后在主循环中(对于Canvas/GameCanvas内容),执行以下操作

然后开始在代码中插入大量try/catch块,无论您在何处创建对象

如果上面的myImage没有加载,那么在尝试加载时将出现NullPointerException

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

JavaME的众多规则之一是“永远不要信任模拟器——总是在多个真实设备上测试”

NullPointerException是最难定位的异常,但并非不可能。我已经做过很多次了,只需在设备上输出一条错误消息

String error = null;
Image myImage = null;

try {
    myImage = Image.createImage("someImage.png");
} catch (Exception e) {
    error = "Failed to load someImage.png: " + e.toString();
}
然后在主循环中(对于Canvas/GameCanvas内容),执行以下操作

然后开始在代码中插入大量try/catch块,无论您在何处创建对象

如果上面的myImage没有加载,那么在尝试加载时将出现NullPointerException

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

要识别抛出异常的块,可以将可能的区域包装在try/catch中。捕获NullPointerException并抛出一个更模糊的异常,它将帮助您缩小范围。因此可以抛出算术异常等。

要确定抛出异常的块,可以将可能的区域包装在try/catch中。捕获NullPointerException并抛出一个更模糊的异常,它将帮助您缩小范围。这样就可以抛出算术异常等。

精彩的答案!非常感谢,欢迎来到这里。(就要开始实施了。)回答得真好!非常感谢,欢迎来到这里。(即将开始实施。)