【发布时间】:2015-03-17 21:43:23
【问题描述】:
所以我想拦截未处理的异常,我这样做是:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
//MY CUSTOM CODE TO SEND LOGS
System.exit(2);
}
});
无论如何我可以执行我的自定义代码,然后恢复正常处理这些异常的方式吗?我相信我遇到了一些悬而未决的问题,因为 System.exit 似乎不能可靠地工作。
【问题讨论】:
-
调用
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(thread, ex)以获得默认行为,如果这就是您的意思。见stackoverflow.com/a/23124561/115145。 -
@CommonsWare 所以我基本上可以自己做逻辑,然后在我发布的上述代码中调用
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(thread, ex)? -
是的。这将触发正常的错误对话框,由 Android 提供并由 Play 商店(或其他设备上的其他分发渠道)增强。
-
@CommonsWare 我试过了,它似乎不会自动杀死应用程序。我只是把它挂起来。
-
如果你完全删除你的
UncaughtExceptionHandler,会发生什么?
标签: java android exception exception-handling