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

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

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

  • 打开MapActivity时'终结器引发的未捕获的exception'
  • 从数组列表中删除元素后java.util.ConcurrentModificationException android
  • 在等待退出信号时处理InterruptedException(Android中的错误)
  • 可以依靠SQLiteConstraint让SQLite检查我吗? 有没有抓住?
  • java.lang.UnsupportedOperationException:在AdapterView中不支持addView(View,LayoutParams)
  • Android:下载数据时处理意外的互联网断开连接
  • Android中没有静态方法setOnApplyWindowInsetsListenerexception
  • 包裹解组未知types代码
  • 你为什么要这样做?

    如果有些地方你可以捕捉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处理的最佳做法

    谢谢迪帕克