Android_程式未處理異常的捕獲與處理

來源:互聯網
上載者:User

標籤:

 

1.簡介對於程式拋出的未被捕獲的異常,可能會導致程式異常退出,介面不友好且應記錄嚴重錯誤資訊上傳至伺服器。這裡主要使用UncaughtExceptionHandler

我們在進入Activity的onCreate函數的時候,設定一下處理未捕獲異常 

1.簡介對於程式拋出的未被捕獲的異常,可能會導致程式異常退出,介面不友好且應記錄嚴重錯誤資訊上傳至伺服器。這裡主要使用UncaughtExceptionHandler2.代碼實現public class CrashHandler implements UncaughtExceptionHandler {public static final String TAG = CopyOfCrashHandler.class.getSimpleName();// 系統預設的UncaughtException處理類private Thread.UncaughtExceptionHandler mDefaultHandler;private static CopyOfCrashHandler instance;private Context mContext;private CopyOfCrashHandler() {}/** 擷取CrashHandler執行個體 ,單例模式 */public static CopyOfCrashHandler getInstance() {if (instance == null)instance = new CopyOfCrashHandler();return instance;}/** * 初始化 */public void init(Context context) {mContext = context;//記錄下預設的UncaughtExceptionHandlermDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();//Thread.setDefaultUncaughtExceptionHandler(this);}/** * 當UncaughtException發生時會轉入該函數來處理 */@Overridepublic void uncaughtException(Thread thread, Throwable ex) {if (!handleException(thread, ex) && mDefaultHandler != null) {// 如果使用者沒有處理則讓系統預設的異常處理器來處理mDefaultHandler.uncaughtException(thread, ex);} else {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}android.os.Process.killProcess(android.os.Process.myPid());System.exit(1);}}/** * 自訂錯誤處理,收集錯誤資訊 發送錯誤報表等操作均在此完成. *  * @param ex * @return true:如果處理了該異常資訊;否則返回false. */private boolean handleException(Thread thread, Throwable ex) {if (ex == null) {return false;}StringBuffer sb = new StringBuffer();sb.append(thread + ", Cause By:" + ex).append("\r\n\r\n");StackTraceElement[] elements = ex.getStackTrace();for (int i = 0; i < elements.length; i++) {sb.append(elements[i].toString() + "\r\n");}//記錄下嚴重錯誤資訊,可以存至本地並上傳至伺服器//LogUtil.bug(TAG, sb.toString());//開啟新Activity友好介面提示//Util.showDialog(mContext, "時間:"+Util.formatSimpleDateAndTime(new Date()), "程式出現異常,請記錄時間並提示開發人員!");return true;}}

  

Android_程式未處理異常的捕獲與處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.