我在制作Blackberry应用时遇到了问题。我找到了一个人,他做了一个教程,做了我尝试过的事情。我复制了教程应用程序的代码,试图重新创建它,只是为了看它的实际效果。结果:空指针异常。
我想知道是什么触发了这个。我怎么能?
答案 0 :(得分:3)
如果捕获Throwable而不是捕获Exception或Exception的任何子类,则可以查看堆栈跟踪。 e.g。
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.
}
答案 1 :(得分:2)
BlackBerry中没有堆栈跟踪,最好使用调试模式,因此当异常发生时应用程序将break
。
人们建议这个
try {
// Code that throws an exception
} catch (Exception e) {
e.printStackTrace();
}
哪些无法在BlackBerry上运行,您需要使用此代替
System.out.println(e.getMessage());
但由于它只显示异常,因此不会显示发生错误的行,您必须在println
中添加其他信息。
在真实设备上,您可以通过this:
访问StackTrace转到主屏幕并键入后门序列LGLG。然后,您可以筛选日志并找到异常条目。然后,您可以通过电子邮件复制并发送跟踪。
我在RIM网站上找到的最好的是document。
答案 2 :(得分:2)
好的,我不能相信这一点,但这个主题似乎给出了答案。
更改catch块以捕获Throwable而不是特定的Exception。这将保持堆栈跟踪并将其添加到事件日志中。
此外,尝试在黑莓智能手机模拟器上运行您的应用程序而不是真正的手机,因为黑莓在他们的文档中指出您可以调用printStackTrace函数。
答案 3 :(得分:0)
在黑莓中发现NPE创始人很容易。 e.g。
1.将此代码插入任何地方。
String temp = null; temp.length();
答案 4 :(得分:-1)
我不知道黑莓,但通常情况下,例外有一个堆栈跟踪,其中显示了行号:
java.lang.NullPointerException
at your.packege.ClassName.methodName(ClassName.java:169)
所以获取堆栈跟踪并查看。堆栈跟踪是通过
获得的try {..} catch (Exception ex) {..}
或让它冒泡到打印到标准输出的地方。
此外,每个异常都有getStackTrace()
方法,它将堆栈跟踪的每一行返回为StackTraceElement
答案 5 :(得分:-1)
您应该能够查看异常的堆栈跟踪。
您可以将此打印到控制台,执行以下操作:
try {
// Code that throws an exception
} catch (Exception e) {
e.printStackTrace();
}
注意:这绝不会出现在生产代码中!
答案 6 :(得分:-1)
程序崩溃时查看stack trace。它会告诉你发生异常的位置(通常是代码行,如果可用的话)以及哪个对象为null。
如果您没有看到堆栈跟踪,请使用OMG Unicorns suggests包围主方法中的所有内容。