我問this問題一段時間回來Stackoverflow
,答案工作對我來說,它覆蓋handleUncaughtException
,我保存了異常,並拋出默認Unfortunately app has stopped working
,但是當我在我的應用程序集成了這個,我面臨一個問題。如何覆蓋handleUncaughtException不改變其functionallity
這是我得到的答案。
private Thread.UncaughtExceptionHandler defaultExceptionHandler;
public void registerCrash(){
defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException (Thread thread, Throwable e){
handleUncaughtException (thread, e);
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
}
});
}
它做什麼,它先於handleUncaughtException (thread, e);
我保存的崩潰日誌在這種方法中,然後將其讀入這一行
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
在這裏,我們再次拋出未捕獲的異常,所以它進入第一再次行,並再次保存異常,並進入循環,應用程序不響應。
我想要的是保存崩潰日誌,然後向用戶顯示默認Unfortunate
消息。
編輯
在應用程序啓動它讀取這一點;
defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
當應用程序崩潰時,它讀取這些行
Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException (Thread thread, Throwable e){
handleUncaughtException (thread, e); //Custom Method
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
}
所以它首先進入handleUncaughtException()
在那裏,我已經提供了自定義的實現,然後它去這一點;
if(defaultExceptionHandler != null){
defaultExceptionHandler.uncaughtException(thread, e);
}
defaultExceptionHandler
從不爲空;所以它會在多次崩潰的情況下循環。
我曾嘗試在其中添加count
,但每次都是0
。
'所以它會在一個循環中多的情況下,崩潰'你能指出這種情況發生嗎?什麼導致了另一個異常發生? – azizbekian
@azizbekian:我無法找到reporduce它的步驟。這不會每次都發生,但有時 – Kirmani88
什麼是defaultExceptionHandler方法。這是你自己的方法嗎?如果是,則發佈該方法代碼。併發布handleUncaughtException(線程,e)方法代碼 –