2011-05-27 85 views

回答

2

你爲什麼要這樣做?

如果有些地方可以捕捉到異常並執行一些有意義的操作,例如顯示有用的警告,然後繼續以一致且可用的狀態運行應用程序,那麼很好。

如果你不能採取任何有意義的行動,那麼就讓失敗發生。例如,有很多方法可以通知您產生的故障,因此您可以修復它們:例如,查看ACRA。或者,Android開發人員控制檯現在會報告您的市場分銷應用程序的失敗。

+26

「你爲什麼要這樣做」不是一個答案。 – 2013-04-14 04:52:31

+3

@Glenn,「你爲什麼要這麼做?」是完全有效的迴應。答案不一定是問題的直接答案。它可以是「你不應該這樣做,你有沒有試過考慮這個?」 (請參閱SO FAQ)。在這種情況下,吞嚥所有例外情況是相當糟糕的做法。捕捉所有內容並允許你的應用程序「陷入困境」並不是一個好主意,因爲它會碰到任何不一致的狀態。最好處理具體的情況,你可以向用戶提供有意義的反饋或採取有意義的行動出錯。 – 2013-08-20 14:33:17

+9

這是一個迴應。這不是一個答案。 – 2013-08-20 16:06:34

2

我建議你閱讀有關ACRA here

0

所有的錯誤和異常是Throwable延伸。通過捕獲Throwable,可以處理所有意外情況。但捕捉錯誤將會產生結果。你只可以在catch塊做未便之前應用程序崩潰

5

您可以使用以下方法:

public class MyApplication extends Application 
{ 
    public void onCreate() 
    { 
    // Setup handler for uncaught exceptions. 
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() 
    { 
     @Override 
     public void uncaughtException (Thread thread, Throwable e) 
     { 
     handleUncaughtException (thread, e); 
     } 
    }); 
    } 

// here you can handle all unexpected crashes 
    public void handleUncaughtException (Thread thread, Throwable e) 
    { 
    e.printStackTrace(); // not all Android versions will print the stack trace automatically 

    Intent intent = new Intent(); 
    intent.setAction ("com.mydomain.SEND_LOG"); // see step 5. 
    intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); // required when starting from Application 
    startActivity (intent); 

    System.exit(1); // kill off the crashed app 
    } 
} 

將處理您的應用程序意外崩潰,這取自that answer

相關問題