【发布时间】:2020-11-30 12:05:43
【问题描述】:
我有一个异常处理程序来处理来自 Activity 类的异常,异常处理程序如下所示。
public class ExceptionHandler implements Thread.UncaughtExceptionHandler {
public static final String TAG = "Exception handler";
private final Context activity;
public ExceptionHandler(Context activity) {
this.activity = activity;
}
@Override
public void uncaughtException(@NonNull Thread thread, @NonNull Throwable throwable) {
Intent error = new Intent(activity, ErrorCatcher.class);
activity.startActivity(error);
}
}
从活动类初始化
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.e(TAG, "onRestart: Hey just created");
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this.getApplicationContext()));
// other methods and function
}
当控件来到异常处理程序时,并没有创建活动,而是挂起我的应用程序的空白页面。
我得到的唯一消息是
I/Timeline: Timeline: Activity_launch_request time:417281208 intent:Intent { cmp=com.yyy.xxx/com.yyy.xxx.Activities.Error }
编辑:好的,经过一番挖掘,我发现,如果没有抛出异常,那么活动就会启动(即我可以看到活动页面)但是当抛出异常时,就会出现空白页面被展示。为什么只有在抛出异常时才会出现这种情况,以及在android中处理异常的更好方法是什么?有什么帮助吗?
EDIT 2:类似于https://codecrunch.co/blog/custom-error-handling-in-android/
【问题讨论】:
-
我会重命名您的目标活动,因为
Error可能会与java.lang.Error混淆,尤其是当您在同一上下文中处理java.lang.Throwable时。 -
但这不可能是它无法正常工作的原因??
标签: java android android-studio android-intent android-activity