gpt4 book ai didi

java - 从模糊的堆栈跟踪中查找异常原因

转载 作者:行者123 更新时间:2023-12-02 07:09:44 28 4
gpt4 key购买 nike

我有一个 Android 应用程序,最近被一些使用 4.x 设备的用户神秘地强行关闭。查看异常堆栈,似乎错误发生在我的任何代码运行之前,但我假设我正在做一些导致此问题的事情。

*我查找原因或堆栈的方式有问题吗?否则,如果这是完整的堆栈跟踪,Android 是否真的有可能在我的任何代码运行之前就失败了? *

我发现后者不太可能,因为我在 ApplicationonCreate() 方法中注册了我的 UncaughtExceptionHandler ,并且我通常会得到一个来 self 的用户的文件。

我的错误日志代码如下:

我使用应用程序的 .当发生错误时,我将异常信息写入uncaughtException(Thread thread,Throwable ex)中的日志。这就是我找到要打印的字符串的方法:

    // Get exception info

String newLine = "\r\n";
String message = "Message: " + ex.getMessage();
String cause = "Cause: " + ex.getCause();
StackTraceElement[] stes = ex.getStackTrace();
String stack;

// build stack trace

stack = "Stack: " + newLine;

for ( int i = 0; i < stes.length; i++ )
{
stack += stes[i].toString();
stack += newLine;
}

// print out message
// print out cause
// print out stack

将其输出到文件:

消息:无法创建应用程序 com。(修改应用程序名称以实现匿名)。*。*应用程序:java.lang.IllegalArgumentException
原因:java.lang.IllegalArgumentException
堆:
android.app.ActivityThread.handleBindApplication(ActivityThread.java:4254)
android.app.ActivityThread.access$1400(ActivityThread.java:140)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4921)
java.lang.reflect.Method.invokeNative( native 方法)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
dalvik.system.NativeStart.main( native 方法)

附注是的,我知道 ACRA,但我现在不想使用它。

最佳答案

也许您的应用程序引发了一个异常,该异常被捕获然后重新抛出。

您仅打印最后一个异常的堆栈跟踪。也许这个异常有一个原因(ex.getCause() 不是 null)。在这种情况下,您还应该打印原因的堆栈跟踪(可能是原因的原因......)。

您不必自己执行此操作。 Throwable 有一个很好的方法,可以将完整的堆栈跟踪和回溯打印到 PrintStream:

public void printStackTrace(PrintStream s)

之后,您只需将 printStream 写入日志即可。

关于java - 从模糊的堆栈跟踪中查找异常原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667252/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com