(編輯:這個問題是關於BB的具體問題,因爲它優化異常的奇怪方式,我對J2SE中的正常異常處理模式感到滿意,但BB的行爲並不像平時那樣正常。的情況下,BB放棄錯誤類型和消息,以及BB開發人員如何嘗試處理此問題,或者他們忽略它。)BlackBerry - 全局異常處理程序
我想在我的BB應用程序中實現某種形式的自定義全局錯誤處理。特別是要嘗試處理任何其他未被我的代碼捕獲的異常,因爲我沒有預料到它們。默認行爲是應用程序失敗,並彈出一個對話框,說明發生了未知錯誤。
我想描述一點點更好的錯誤,因此我的術語「全局錯誤處理程序」。一些相似的代碼:
public static void main(String[] args)
{
try
{
FusionApp app = FusionApp.getInstance();
app.enterEventDispatcher();
}
catch (Throwable t)
{
// t has lost all type information at this point - this prints "null"
System.err.println(t.getMessage());
}
}
我眼前的問題是,當我趕上t
(在main()
方法app.enterEventDispatcher()
呼叫後),它已經失去了類型信息。例如我知道該代碼會拋出一個帶有自定義消息的IllegalArgumentException
- 但是在catch塊中,它是java.lang.Error
和null
消息。
而在堆棧跟蹤(ALT LGLG)中,消息也已丟失(至少堆棧跟蹤是準確的)。
那麼......用什麼模式來實現某種形式的全局錯誤處理?或者這在這個平臺上被認爲是一個壞主意?
彈出未知錯誤對話框是否被認爲是好的做法 - 我不喜歡這樣,但也許這是BB的方式?
嘿,理查德我是BugSense的聯合創始人。我們專注於移動應用程序的錯誤跟蹤。如果我們聊天的是黑莓平臺,那將是非常棒的。請隨時聯繫我們在我們的網站 – PanosJee 2011-07-08 13:54:57