我在制作黑莓应用程序时遇到了问题。我找到了一个做了与我尝试的相同操作的教程作者。我复制了教程应用程序的代码来重新创建它,只是为了看到它的运行情况。结果:空指针异常。
我想知道是什么触发了这个异常。我该怎么办?
我在制作黑莓应用程序时遇到了问题。我找到了一个做了与我尝试的相同操作的教程作者。我复制了教程应用程序的代码来重新创建它,只是为了看到它的运行情况。结果:空指针异常。
我想知道是什么触发了这个异常。我该怎么办?
如果您捕获Throwable而不是捕获Exception或任何Exception子类,则可以查看堆栈跟踪。 例如:
try
{
//some code
}
catch(Throwable t)
{
//Will automatically show a stacktrace in eclipse.
//I believe on a real device it will put the stacktrace in the eventlog.
}
在黑莓设备中没有堆栈跟踪,最好的方法是使用调试模式,这样当异常发生时应用程序将会中断。
有人建议这样做。
try {
// Code that throws an exception
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(e.getMessage());
但是由于它只显示异常,所以它不会给出错误发生的代码行,您需要在println
中添加其他信息。
在实际设备上,您可以通过执行此操作来获取堆栈跟踪:
进入主屏幕并输入后门序列 LGLG。然后,您可以通过日志进行筛选,找到异常条目。然后,您可以通过电子邮件复制并发送跟踪信息。
我在RIM网站上找到的最好的资料是这个文档。
好的,我不能为此负责,但是这个帖子似乎给出了答案。
将捕获块更改为捕获Throwable而不是特定的异常。 这将保留堆栈跟踪并将其添加到事件日志中。
另外,请尝试在黑莓智能手机模拟器上运行应用程序,而不是在您的真实手机上运行,因为黑莓在其文档中指出您可以调用printStackTrace函数。
在黑莓中查找NPE起源很容易。 例如:
1. 在任何地方插入此代码。
String temp = null; temp.length();
我不了解黑莓,但通常情况下,异常会有一个堆栈跟踪,其中显示了行号:
java.lang.NullPointerException
at your.packege.ClassName.methodName(ClassName.java:169)
所以获取堆栈跟踪并查看。堆栈跟踪是通过以下方式获取的
try {..} catch (Exception ex) {..}
或者通过让它冒泡到打印到标准输出的位置。
此外,每个异常都有一个getStackTrace()
方法,它将堆栈跟踪的每一行作为StackTraceElement
返回。
你应该能够查看异常的堆栈跟踪。
你可以通过类似以下方式将其打印到控制台:
try {
// Code that throws an exception
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(e.getMessage());
。 - Michael B.