【问题标题】:Debugging Java ME apps for Nokia Series 40 phones on the phone在手机上为 Nokia Series 40 手机调试 Java ME 应用程序
【发布时间】:2012-10-19 17:19:13
【问题描述】:

我刚刚为 Series 40 平台创建了一个相当简单的 Java ME 应用程序。该应用程序在模拟器中完美运行,但是当我将其打包到我自己的 40 系列手机时,该应用程序失败并显示 NullPointerException。几乎我所有的代码都处理数组,因此很难判断错误发生在哪里,因为手机的错误报告不包含任何细节。

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

【问题讨论】:

    标签: java-me nullpointerexception nokia-s40


    【解决方案1】:

    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();
    }
    

    然后在你的主循环中(对于 Canvas / GameCanvas 的东西),做

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

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

    如果上面的 myImage 没有加载,那么你会在尝试加载时得到 NullPointerException

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

    【讨论】:

    • 绝妙的答案!非常感谢,欢迎来到 SO。 (即将开始实施。)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2012-01-29
      相关资源
      最近更新 更多