2012-12-27 30 views
0

在Google.Play中,存在關於未捕獲的異常的統計信息。我想知道有沒有什麼方法可以爲異常添加一些額外的信息,所以它會顯示在Google.Play(導致第三方錯誤報告服務無法使用)。向未捕獲的異常添加額外信息

我知道Thread.setUncaughtExceptionHandler,我想我可以寫類似

public void uncaughtException (Thread thread, Throwable ex) { 
    throw new CustomException(ex, "extraData"); 
} 

與例如我自定義異常消息。

但是,有沒有其他方法可以實現這一目標?

回答

1

你的意思是?

public class CustomException extends Exception 
{ 
    public CustomException(Throwable cause, String message) 
    { 
     super(message, cause); 
    } 
} 
+0

是的,消息似乎是傳遞額外信息的唯一方法。主要問題是如何捕捉這些異常 – marwinXXII

1

您可以使用ACRA。除了提供比Google Play崩潰報告更多的信息之外,它還允許您輕鬆地將custom data添加到報告中。

+0

我需要在Google.Play中看到此信息,而不是其他服務,甚至Google文檔 – marwinXXII

0

我想說你錯過了這裏的觀點。爲了將信息添加到未捕獲的異常中,您需要捕獲異常。一旦您知道在哪裏以及如何捕捉異常,正確的方法就是正確處理異常,以免造成用戶體驗中斷。

未捕獲的異常發生是因爲您忽略了錯誤條件並且不處理錯誤條件。處理錯誤並且不會有未捕獲的異常擔心。

瞭解可能的錯誤條件是編寫良好工作程序的基礎。如果您繼續使用代碼忽略錯誤和狀態代碼,您將創建一個混亂,經常會遇到未捕獲的異常。處理異常和錯誤需要很多時間和代碼,但它只是編程的一部分,您不能忽略。

+0

要點是有一個異常處理程序,它將爲以後的調查添加額外的信息。這是必需的,因爲我在Google.Play中看到了錯誤,這些錯誤在測試環境中沒有複製,但存在於生產中(這可能是生產Web服務的問題,而不是應用程序本身)。我需要找出造成這些異常的原因,這就是爲什麼我需要一些額外的信息。 – marwinXXII

+0

然後,將所做的所有事情放在try {...} catch(Throwable th){...}塊中。沒有一個地方,因爲有幾個入口點(onCreate,onResume,onPause,onBackPressed等)。您必須在每次控制自己的代碼時執行此操作。但是即使這樣也無法解決將無效數據傳遞給API的情況,例如,UI線程會拋出異常。 – Torben

+0

我不想在'try {} catch {}'中包裝所有東西(因爲還有後臺任務也需要try-catch)。我已經寫了關於線程異常處理程序(或者defaultHandler),它可以作爲一個單一的接收點。我的問題是將拋出異常處理程序幫助我發送額外的數據到Google.Play。還有什麼替代品。 – marwinXXII