簡單介紹:
程式中,可以捕捉到的異常,通常使用try...catch..finally來解決,但還存在一些我們沒有捕捉到的異常,例如,使用控制項不繫結,變數未初始化等,而捕捉這些由於疏忽而產生的異常則使用 uncaughtexceptionhandler物件來實現。
常見的異常奔潰帶來的處理步驟:
1)將錯誤異常等記錄到本地日誌中
2)彈出彈窗,提醒使用者出現bug,請使用者配合上傳錯誤日誌
3)提醒使用者出現bug的功能暫時不要使用,然後彈到主頁面。
/**
* created by zhu hao on 2018/2/7.
*//**
* 全域性捕獲異常資訊
* 發生uncaught異常時,由該類來接管程式
*/public class
crashhandler
implements
uncaughtexceptionhandler
public static
crashhandler getinstance()
return
instance
;} }
public void
init(context context)
/*** 當uncaughexcept發生時會轉入該函式來處理 *
@param
thread
* @param
throwable
*/@override
public void
uncaughtexception(thread thread, throwable throwable)
if
(handleexception(throwable))
else
log.
i (
tag
,"uncaughtexception: 後捕捉到"
);}
/**
* 自定義錯誤處理,收集錯誤資訊,傳送錯誤報告等操作 *
@param
ex
* @return
true:如果處理了該錯誤資訊返回true,否則返回false
*/private boolean
handleexception(
final
throwable ex)
try
}.start();
log.
i (
tag
,"handleexception: crashhandler處理完成"
);}catch
(exception e)
return true
;}
private void
showdialog(context context)
});builder.setnegativebutton(context.getresources().getstring(r.string.
),
new
dialoginte***ce.onclicklistener()
});dialog dialog=builder.create();
dialog.getwindow().settype(windowmanager.layoutparams.
type_system_alert
); dialog.show(); }
} 其中,debug_ex
是封裝的全域性引數,除錯時置成true,報錯容易看到,不除錯置成false,防止報錯,生成錯誤日誌。
index.
getinstance
fragmenulist
) 是封裝的fragment的切換方法。
使用方法:
/**
* created by jason zhu on 2017-08-21.
*/public class
aioextends
private static
aioinstance
; //用list儲存每個activity
private
list
mactivitylist
=new
linkedlist();
private
list
mservicelist
=new
linkedlist();
public static
aio getinstance()
return
instance
; }@override
public void
oncreate()
public void
addactivitylist(activity activity)
public void
addservicelist(service service )
public void
exit() }
for
(service service :
mservicelist
) }}catch
(exception e)
finally
},200);
// } }
}:
android 無故崩潰
啟動debug,直接崩潰,報 didn t find class androidx.core.content.fileprovider on path dexpathlist,將minisdk版本跳過,就不崩潰了 從21調回23 網上有很多說引用 androidx.multidex 庫,但對我的工程...
linux 核心崩潰處理
pc 1.定位 崩潰在核心中還是 ko cat proc kallsyms 1.txt c0034818 t kmalloc c00082a8 t quiet kernel 最開始的是虛擬位址 bf000000 t a cdd 由此可看 崩潰在 ko 2.定位崩潰在 ko中的哪個函式 arm lin...
VC window程式崩潰處理
程式設計師有太多的學習點,接觸不到就是乙個盲點,今天看到c 在window下的崩潰處理。從此可以在程式崩潰時啟動自己的處理程式,或者友好的告訴使用者了。include stdafx.h include include for exception access violation include in...