在以下代码中,我将在已发布的应用程序中获取异常数据。此应用程序未在调试模式下运行 - 它在许多手机上作为已发布的应用程序运行。
我在这里工作得很好。它将异常数据放入共享内存中,下次应用程序运行时我会将其邮寄给自己。我的问题是我得到的数据并不是非常有用。这就是生产的东西。 。
divide by zero StackTrace= [Ljava.lang.StackTraceElement;@7734137 Cause= null ex= java.lang.ArithmeticException: divide by zero
private Thread.UncaughtExceptionHandler onBlooey = new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread thread, Throwable ex) {
putPref("storedexception", "Exception: " + ex);
}
};
这并不能说明我的意思。无论如何我可以获得堆栈跟踪吗?有什么能告诉我程序错误发生在哪里? 谢谢, 迪安
答案 0 :(得分:0)
糟糕。很快就发布了。想出答案......
private Thread.UncaughtExceptionHandler onBlooey = new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread thread, Throwable ex) {
// quickly store the exception info and mail it to me nextime on startup
debugLog("found uncaught exception: " + ex, true);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
String st = "";
st = sw.toString(); // stack trace as a string
putPref("storedexception", "Exception: " + ex + " stacktrace: " + st);
}
};