標籤:原始碼 異常 java 管理 bug
愛生活,愛Android!相信每一個Android開發人員都喜愛自己的工作,每天不停的生產代碼,不停的解決Bug,
樂在其中,不斷的學習,不斷的總結,我們應該積累出自己寫代碼的良好習慣,慢慢的,我們就會固定出完全屬於
自己的東西,下面是自己寫項目時,碰到的一個問題,跟大家分享一下,有見解不到之處,還請大家指教,謝謝!
大家都知道,Android是基於Java的,本身會產生很多我們寫代碼時預料不到的異常,而每一個異常都很可能
導致我們的程式崩潰,比如最常見的NullException、ClassCastException、ClassNotFoundException、ANR等等
的,而Android本身的OS會捕捉到這些異常,在dalvik中處理,然後退出程式,退出的介面也很不友好,在這種情況
下,我們就有了自己的想法,如果我們能捕捉到這些異常,就可以將其利用起來,提升我們的應用品質,我們可以
在捕捉到異常後進行如下操作:
1、定義自己的處理介面,友好的展現給客戶,提高使用者體驗
2、收集錯誤資訊,及時修改,提高代碼的穩定性
光從文字看起來,這兩點非常簡單,但是當你自己將異常處理機制布署在自己項目中時,你就知道它對我們的項目
帶來多大的協助!
下面來看一下,如何給自己的項目中布署全域的異常處理,步驟分為如下幾步:
第一步,註冊Application,在開發應用時都會和Activity打交道,而Application使用的就相對較少了。 Application
是用來管理應用程式的全域狀態的,比如載入資源檔。 在應用程式啟動的時候Application會首先建立,然後才會根
據情況(Intent)啟動相應的Activity或者Service。 本文將在Application中註冊未捕獲異常處理器。
第二步,實現UncaughtExceptionHandler,UncaughtExceptionHandler是線程未捕獲異常控制器,用來處理未捕
獲異常的。 如果程式出現了未捕獲異常預設情況下則會出現強行關閉對話方塊實現該介面並註冊為程式中的預設未捕獲異
常處理 這樣當未捕獲異常發生時,就可以做些異常處理操作 例如:收集異常資訊,發送錯誤報表 等。當程式發生Uncaught
異常的時候,由該類來接管程式,並記錄發送錯誤報表。
第三步,異常處理操作的收集異常資訊
第四步,異常處理操作的本地儲存異常報告
第五步,異常處理操作的將異常資訊發送到伺服器
以上的五步,若大體的分類的話,只有第一步、第二步,後邊的第三步、第四步、第五步都是在異常處理類中實現的,只
是因為它是具體的處理過程,比較重要,所以本文中單獨列出來。
下面我們來看一下代碼實現:
註冊Application
實現UncaughtExceptionHandler
當出現異常時,會進入uncaughtException方法處理,我們所有的控制都可以加在這裡
收集異常資訊
本地儲存異常報告,這一步非常實用,一些捕捉不到的異常,我們可以通過這樣的方式將它執行個體化,儲存
在本地檔案中,裡邊的詳細的資訊,我們可以像在logcat中一樣,看到它具體是出在哪個類的哪一行,從而進行
修改,非常好用,強力推薦!
將異常資訊發送到伺服器
拿到異常資訊後,我們還可以搭建自己的伺服器,收集異常資訊,想怎麼樣儲存,就看大家自己的習慣了!
我這裡是拿到異常資料,儲存到本機資料庫了,如下樣本。
Android用戶端項目全域異常處理和伺服器資料儲存