堆栈跟踪不引用我自己的任何源代码。 。 。
线程[< 1> main](Suspended(例外RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread $ ActivityClientRecord, 意图)行:2255
ActivityThread.handleLaunchActivity(ActivityThread $ ActivityClientRecord, 意图)行:2309 ActivityThread.access $ 700(ActivityThread, ActivityThread $ ActivityClientRecord,Intent)line:157
ActivityThread $ H.handleMessage(消息)行:1289
ActivityThread $ H(Handler).dispatchMessage(Message)行:99 Looper.loop()行:176 ActivityThread.main(String [])行:5317
Method.invokeNative(Object,Object [],Class,Class [],Class,int, boolean)line:not available [native method] Method.invoke(Object, 对象...)行:511 ZygoteInit $ MethodAndArgsCaller.run()行: 1102 ZygoteInit.main(String [])行:869 NativeStart.main(String [])行:不可用[本机方法]
...我在我的应用程序中启动了几个活动,并且所有这些活动都包含在try / catch中但是如果我在catch块中设置断点它们没有被命中,并且如果我跳过启动它的代码活动似乎没什么不妥。系统也没有向Logcat写任何异常(在Logcat上没有过滤器,完整的详细输出)。
点击上面的行只会给我“找不到来源”。有没有办法看到它试图启动的Activity或者异常的性质是什么?
答案 0 :(得分:10)
在研究完之后,我在这里看到了这个问题的答案:
How do I prevent exception catching in Android?
建议继续执行代码,直到在logcat中获取与您的代码相关的信息。
关于使用详细等的说明 此外,我个人只是在开始调试时专注于错误。我觉得它更容易阅读。在开始查看警告之前,我从logcat中删除了所有错误。同样详细,如果程序运行不正常,logcat可能无法跟上。
这是我个人的调试风格,绝不是法律。
祝你好运。
答案 1 :(得分:6)
首先 - try / catch不是获得防弹应用程序的最佳方式 - 通常大量的此类块意味着作者隐藏错误。
你可能做的是将一些错误的参数传递给某些系统方法,或者只是你有一些特定于平台的错误。我不能仅根据您的logcat说出该方法是什么。
如何找到错误?可能最有效的方法是设置一些日志消息/断点并逐行调试,只要您再次收到此错误即可。如有必要,请返回此处并提供更多详细信息。
答案 2 :(得分:1)
尝试在调试模式中运行IDE的调试器。它通常会捕获您的异常。 您可能必须单击不同的线程才能看到每个线程发生的情况。
答案 3 :(得分:1)
您确定版本4.2.2
是否正确?对于所有4.2.2
标记,AOSP code for ActivityThread.java不会在第2255行显示任何内容。没有其他任何事情可以继续下去,如果我遇到这种情况,我会深入研究AOSP代码,看看它是否提供了关于哪里出错的任何线索。
答案 4 :(得分:1)
onCreate()
ActivityClientRecord
的代码块是什么?
startActivity()
的地方然后在目标活动的onCreate()的第一个语句上。然后你应该逐条陈述以找出确切的原因。如果您仍然无法找到问题点,请抓住Error
而不是Exception
包裹startActivity()
,然后告诉我们您是否可以看到任何有用的信息。
答案 5 :(得分:1)
尝试在代码中添加Application类:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
ex.printStackTrace();
}
});
}
}
答案 6 :(得分:1)
根据我的经验,我在查找导致崩溃的代码时遇到了类似的问题。以下是我在这种情况下的做法: