Android 我如何阅读和理解stacktraces?

Android 我如何阅读和理解stacktraces?,android,nullpointerexception,stack-trace,Android,Nullpointerexception,Stack Trace,我在市场上有一些应用程序,最近我收到了一些错误报告,这些报告提供了跟踪信息。我不太明白如何阅读和理解它们,所以我实际上可以解决这个问题 以下是其中一条轨迹: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.emsprotocols.nycemsprotocols/com.emsprotocols.nycemsprotocols.ConnectivitCheck}: java.lang.NullPoint

我在市场上有一些应用程序,最近我收到了一些错误报告,这些报告提供了跟踪信息。我不太明白如何阅读和理解它们,所以我实际上可以解决这个问题

以下是其中一条轨迹:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.emsprotocols.nycemsprotocols/com.emsprotocols.nycemsprotocols.ConnectivitCheck}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
... 11 more

我不确定这是1个错误还是2个或更多。我不确定如何解决此问题。

由于NullPointerException,应用程序无法加载活动com.emsprotocols.nycemsprotocols.ConnectivitCheck:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.emsprotocols.nycemsprotocols/com.emsprotocols.nycemsprotocols.ConnectivitCheck}: java.lang.NullPointerException

在第21行的onCreate方法中引发了异常:

原因:java.lang.NullPointerException位于 com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreateConnectivityCheck.java:21


这实际上是一个错误,由运行时异常包装的另一个NullPointerException包装

at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)

这意味着ConnectivityCheck.java中的第21行出现问题,请尝试修复它并继续。

调试是为了找到原因,因此请查找这一行:

Caused by: java.lang.NullPointerException
at     com.emsprotocols.nycemsprotocols.ConnectivityCheck.onCreate(ConnectivityCheck.java:21)
然后看文件的第21行。对于一种没有指针的语言,Java肯定会遇到很多空指针异常。通常情况下,在底层实现中,对象成为指向数据结构的指针。当您调用对象的方法时,即

myObject.spindle()
VM跟踪跟踪myObject的指针,期望找到一个数据结构,并期望该结构中的一个entires将其引导到名为spindle的方法的代码

问题是,如果myObject为null,那么实际上就没有数据结构来查找spindle方法。您已经要求它执行不可能的操作—如果没有异常处理,程序将无法继续

最常见的情况是,对象为null的原因是您从其他对象分配了对象,而其他对象无法为您分配对象,因此返回null

解决问题通常遵循以下三个课程中的一个或多个:

找出对象为空的原因,并修复它 在尝试调用对象的任何方法或访问其字段之前,请测试对象是否为null 处理异常-即,告诉程序在遇到这种情况时如何恢复
非常感谢。这看起来很简单,但是还有什么其他的项目和数字呢?谢谢。这看起来很简单,但是还有什么其他的项目和数字呢?正如stacktraces的意思,这个错误会导致它以前的功能失败。因此,虽然此项表示您的软件包中存在错误,但其他项表示相应软件包中的错误系统的错误。谢谢。这看起来很简单,但是还有什么其他的项目和数字呢?它是一个调用堆栈——程序到达异常点的方法调用的历史,顺序相反。例如,我们看到您的onCreate方法由平台代码中名为android.app.Activity.performCreate的东西调用,而该代码又由android.app.Instrumentation.callActivityOnCreate等调用。。。