Android:由于未处理的错误,避免应用程序崩溃

在我的Android应用程序中,我试图把Try Catch块放在所有可能的地方。 但是,我想避免由于任何未处理的错误的应用程序崩溃。 我怎样才能做到这一点?

我已经使用Thread.setDefaultUncaughtExceptionHandler(handler); 但是这只会帮助我获得崩溃数据的权利?

Solutions Collecting From Web of "Android:由于未处理的错误,避免应用程序崩溃"

你为什么要这样做?

如果有些地方你可以捕捉exception并做一些有意义的事情,例如显示一个有用的警告,然后以一致和可用的状态继续执行应用程序,那么很好。

如果你不能采取任何有意义的行动,那就让失败发生。 有很多方法可以让你知道由此产生的故障,所以你可以解决它们:例如,看看ACRA 。 或者,Android开发人员控制台现在将报告您的市场分布的应用程序的失败。

你可以用下面的方法:

 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 } } 

这将处理您的应用程序意外的崩溃,这是从这个答案 。

我build议你在这里阅读关于ACRA

所有错误和exception都从Throwable扩展而来。 通过捕获Throwable,可以处理所有意外情况。 但是捕捉错误将会产生结果。 在应用程序崩溃之前,您可以在catch块中执行

看看在Android的exception处理的最佳做法

谢谢迪帕克