2010-05-12 55 views
7

我正在考慮使用Thread.setDefaultUncaughtExceptionHandler(...)調用爲我的(Android)移動應用程序(使用Java語法)設置全局默認異常處理程序。我正在考慮僅向用戶顯示帶有適當消息的警報對話框。Java中的全局異常處理程序

在設置DefaultExceptionHandlers時是否需要遵循任何陷阱,警告和規則?像確保進程被終止,完整的堆棧跟蹤寫入日誌等任何最佳實踐?

鏈接到文檔,教程等可以拋出一些光的這是值得歡迎的。

謝謝。

回答

2
  • 名字是有點誤導,因爲使用該方法將設置一個默認的異常處理程序所有線程。
  • 確保沒有異常可以從異常處理程序中拋出。
  • 如果您從異常處理程序中執行GUI,請確保您是從正確的線程執行此操作。
  • 未捕獲的異常只會停止發生異常的線程,如果這也導致進程終止,則取決於可能正在運行的任何其他線程。
+0

「如果你正在從你的異常處理程序中執行GUI,確保你是從正確的線程執行它的。」這是什麼意思? – Gratzi 2010-12-13 14:45:28

+0

這意味着GUI的東西應該在EDT線程中完成(必要時使用'invokeLater')否則會發生奇怪的事情。 – 2011-02-08 10:11:30

1

創建全局異常處理程序的一個可能的問題是您可能會遇到異常循環 - 除非程序終止,否則一些異常將被重複拋出。

如果你的意思是,當拋出一個異常時,顯示一條消息,然後應用程序被終止,那麼你會沒事的。

+0

如果在我的uncaughtException方法中,我只是顯示一個AlertDialog,Runtime會自動終止或終止進程,還是必須對此進行明確的處理? – Samuh 2010-05-12 08:10:42

+0

如果您在正常代碼流中顯示AlertDialog,它會自動關閉嗎? – Finbarr 2010-05-13 06:46:18