在我的onCreate()我設置UncaughtException處理程序如下:如何重新拋出異常
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
Log.e(getMethodName(2), "uncaughtException", throwable);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
它的工作原理確定,但我想獲得顯示力 - 回系統的默認行爲關閉對話框給用戶。
如果我嘗試用throw throwable
替換KillProcess()
調用,編譯器會抱怨我需要用try/catch來包圍它。
如果我圍繞着它有一個try/catch:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
Log.e(getMethodName(2), "uncaughtException", throwable);
throw throwable;
}
catch (Exception e) {
}
finally {
}
}
});
編譯器仍然抱怨throw throwable
需要用一個try/catch包圍。
如何重新拋出該throwable?除了那些信息量很大的Log.e()
之外,系統的行爲與之前完全一樣:因爲我從來沒有設置默認的UncaughtException處理程序。
對不起,但是這會導致無盡的未捕獲異常流,並且根本沒有強制關閉對話框。不是我在找什麼。 –
我已經更新了答案。 – Jeshurun
工程太棒了!接受+1。 –