我是 BlackBerry 应用程序的新开发人员。我在程序中发现了运行时错误。但我不确定程序中发生了哪种类型的错误。我不知道如何查看 BlackBerry 应用程序中的错误。
我在 Eclipse Helios 工作。
如何查看 BlackBerry 程序中的运行时错误?
我是 BlackBerry 应用程序的新开发人员。我在程序中发现了运行时错误。但我不确定程序中发生了哪种类型的错误。我不知道如何查看 BlackBerry 应用程序中的错误。
我在 Eclipse Helios 工作。
如何查看 BlackBerry 程序中的运行时错误?
在 Eclipse 中,您可以调试您的应用程序,方法是通过 USB 电缆连接一个真正的 BlackBerry 设备,或者您可以下载一个 BlackBerry 模拟器并使用它来测试您的应用程序。请注意,BlackBerry 模拟器仅在 Windows 上受支持。
一旦开始调试,您应该会看到 Eclipse Debug 透视图。通常,Eclipse 中打开的窗口之一是控制台窗口。如果您没有看到,请使用 Eclipse 菜单:
Window -> Show View -> Console
当您的应用程序运行(或您的设备已连接)时,您应该会在控制台窗口中看到如下输出:
[0.0] JVM: bklt[1]: setTimeout 120
[0.0] JVM: bklt[1] @438007: JBSC on=0
[0.0] JVM: bklt[1] @438007: SC 0
[0.0] JVM: bklt[1]: setTimeout 120
[0.0] VM:TRJFp=net_rim_services_impl
[0.0] net_rim_crypto_1-3(4CC8AA32)
[0.0] StatusClean
您的程序创建的任何标准输出(例如System.out.println()
)都将与来自操作系统的这些消息混合在一起。
BlackBerry 中的普通java.lang.Exception
对象删除了许多有用信息,因此如果您不知道抛出了哪种异常或在哪里抛出,您可以选择通过简单地捕获应用程序中的所有 java.lang.Throwable 对象来调试问题主程序:
public static void main(String[] args) {
try {
Application app = new MyApp();
app.enterEventDispatcher();
} catch (Throwable t) {
t.printStackTrace();
}
}
public MyApp() {
ButtonScreen bs = new ButtonScreen();
pushScreen(bs);
bs.throwException(); // <- for test purposes!
}
然后,您会在控制台窗口中看到类似这样的内容,并且可以找出代码中出了什么问题:
[0.0] FocusHistory: Focus gained; App HelloBB; Component mypackage.ButtonScreen$1
[0.0] IllegalArgumentException
[0.0] testing exception handling code!
[0.0] HelloBB(51B3A691)
[0.0] ButtonScreen
[0.0] throwException
[0.0] 0x74C
[0.0] HelloBB(51B3A691)
[0.0] MyApp
[0.0] <init>
[0.0] 0x151B
[0.0] HelloBB(51B3A691)
[0.0] MyApp
[0.0] main
[0.0] 0x14B2
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0] BlockingTimeSource
[0.0] run
[0.0] 0x104D
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0] BlockingTimeSource
[0.0] run
[0.0] 0x104D
[0.0] VM:TRJFp=HelloBB
[0.0] net_rim_cldc-26(4CC89E31)
[0.0] BlockingTimeSource
[0.0] run
[0.0] 0x104D
在这种情况下,我把这段代码:
public void throwException() throws Exception {
throw new IllegalArgumentException("testing exception handling code!");
}
进入我的应用程序,让我的MyApp#main()
方法调用MyApp
构造函数,它调用ButtonScreen#throwException()
方法。