看起来像这样的例外令人困惑:
FATAL EXCEPTION: main
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1437)
at android.os.Parcel.readException(Parcel.java:1385)
at com.yourpackage.ipc.IYourClass$Stub$Proxy.yourMethod(IYourClass.java:488)
at com.yourpackage.ipc.YourClassShim.yourMethod(YourClassShim.java:269)
Run Code Online (Sandbox Code Playgroud)
我找到了一堆相关的问题,但没有一个回答"你如何调试这个".所以我正在提出这个问题/答案.
通过查看这里和这里的android源代码,你会看到它可以抛出任何这些(NullPointerException就是我所拥有的):
SecurityException(msg);
BadParcelableException(msg);
IllegalArgumentException(msg);
NullPointerException(msg);
IllegalStateException(msg);
RuntimeException("Unknown exception code: " + code + " msg " + msg);
Run Code Online (Sandbox Code Playgroud)
但究竟是什么导致了这些?
ben*_*nkc 18
这里发生的readException()是检查IPC字节流以查找发生异常的标头; 如果它找到一个,那么它会抛出该类型的新异常,并使用相同的消息,但是缺少原始堆栈跟踪.(它实际上只知道一些异常类型;其他任何东西都被转换为基础RuntimeException.)
那么最初的异常来自哪里?好吧,在真正实现的内容中的某个地方YourClass.yourMethod()- 不是在任何parcelable或IPC代码中.所以去那里,将整个方法包装在try/catch中,并记录你抓到的任何内容.
(或者如果你有远程进程断点工作,那么在那里设置一个断点.)
| 归档时间: |
|
| 查看次数: |
11656 次 |
| 最近记录: |