2015-11-18
6:00 PM
有時在實機測試會遇到 很抱歉,XXX已停止的錯誤並跳開應用程式
這種情況只靠 Log4J 是抓不到錯誤訊息的
因此 Debug 就非常困難 沒有錯誤訊息根本不知道哪裡有問題
那麼要如何取得相關的錯誤訊息呢?
由於是未處理的 Exception (稱作 UncaughtException)
因此會直接拋到 UI Thread 然後報錯 應用程式就停止了
要處理這類 UncaughtException 只要在 Application 加入以下程式碼即可
程式碼範例
public class App extends MultiDexApplication { // 建立 Logger 將以此輸出錯誤訊息 private final Logger logger = Logger.getLogger(App.class); // 建立 UncaughtExceptionHandler UI Thread 的錯誤訊息會拋給這個物件處理 private Thread.UncaughtExceptionHandler androidDefaultUEH; private Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread thread, Throwable ex) { // print 錯誤訊息 logger.error("Uncaught exception is:", ex); // 回報給預設錯誤處理 androidDefaultUEH.uncaughtException(thread, ex); } }; @Override public void onCreate() { super.onCreate(); // 初始化 Log4J ConfigureLog4J.configure(); // 建立 Handler 並指定為預設處理 Handler androidDefaultUEH = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(handler); } }
各項資料連結
Android Handling the Unexpected
Android Developers - Thread.UncaughtExceptionHandler
No comments:
Post a Comment