猿问

在Android上使用全局异常处理

是否有代码示例,或有关如何使用该Thread.setDefaultUncaughtExceptionHandler方法的教程?基本上,无论何时抛出异常,我都试图在应用程序中显示自定义警报对话框。是否有可能做到这一点?我知道,如果在UI线程中引发了异常,则在屏幕上显示某些内容会有些棘手,但是我不知道有任何解决方法。



慕田峪9158850
浏览 501回答 3
3回答

慕码人8056858

带有解决方案来到此页面的人的基本示例:)public class ChildActivity extends BaseActivity {    @SuppressWarnings("unused")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        int a=1/0;    }}处理错误的类:public class BaseActivity extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {            @Override            public void uncaughtException(Thread paramThread, Throwable paramThrowable) {                Log.e("Alert","Lets See if it Works !!!");            }        });    }}

白衣非少年

这里的一个变种,答案由莫特·沙玛有以下改进:错误处理后不会导致应用/服务冻结让Android在您自己完成之后进行正常的错误处理码:public class BaseActivity extends Activity {    @Override    public void onCreate() {        super.onCreate();        final Thread.UncaughtExceptionHandler oldHandler =            Thread.getDefaultUncaughtExceptionHandler();        Thread.setDefaultUncaughtExceptionHandler(            new Thread.UncaughtExceptionHandler() {                @Override                public void uncaughtException(                    Thread paramThread,                    Throwable paramThrowable                ) {                    //Do your own error handling here                    if (oldHandler != null)                        oldHandler.uncaughtException(                            paramThread,                            paramThrowable                        ); //Delegates to Android's error handling                    else                        System.exit(2); //Prevents the service/app from freezing                }            });    }}
随时随地看视频慕课网APP

相关分类

Android
我要回答