Когда я разрабатываю приложение для Android, я хочу создать класс CrashReport, а затем использовать его для отправки отчета на мой сервер.О java Throwable
Я делаю класс под названием CrashHandler которые реализуют UncaughtExceptionHandler и сделать пример, чтобы вызвать ошибку NullPoint в деятельности в целях, класс работает хорошо, но небольшая проблема ... в методе uncaughtException:
@Override
public void uncaughtException(Thread thread, Throwable ex) {
ex.printStackTrace(); //**code line 1**
....//some other codes and variables
StackTraceElement[] elements = ex.getStackTrace();
for (StackTraceElement element : elements) { // **code line 2**
errorString = errorString + "<br/>" + element.toString();
}
}
строка кода 1 печать трассировки стека как:
java.lang.NullPointerException
my.app.ExceptionCaughtActivity$1.onClick(ExceptionCaughtActivity.java:25)
android.view.View.performClick(View.java:2486)
android.view.View$PerformClick.run(View.java:9130)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:130)
android.app.ActivityThread.main(ActivityThread.java:3703)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
dalvik.system.NativeStart.main(Native Method)
но codeline только шоу:
my.app.ExceptionCaughtActivity$1.onClick(ExceptionCaughtActivity.java:25)
android.view.View.performClick(View.java:2486)
android.view.View$PerformClick.run(View.java:9130)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:130)
android.app.ActivityThread.main(ActivityThread.java:3703)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:507)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
dalvik.system.NativeStart.main(Native Method)
вы заметили, что не показали:
"java.lang.NullPointerException"
Я konw Я не назвал getCause() , но при попытке использовать getCause(), она возвращает нуль, не Throwable;
Я попытался просмотреть исходный код метательного класса ... но получил отметить
вы можете мне сказать, почему getCause является недействительным, но printStackTrace имеют причину ошибки, чтобы распечатать ??
Ах, вот оно что. – daimajia
, но как я могу получить текущую причину ошибки другими способами? – daimajia
Проверьте, является ли причина нулевой? Если нет, то это имеет причину. – Jivings