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