如何重新抛出异常

2024-04-22

在我的 onCreate() 中,我设置了一个 UncaughtException 处理程序,如下所示:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable throwable) {
       Log.e(getMethodName(2), "uncaughtException", throwable);
       android.os.Process.killProcess(android.os.Process.myPid());
    }
});

它工作正常,但我想恢复系统向用户显示强制关闭对话框的默认行为。

如果我尝试更换KillProcess()打电话给throw throwable编译器抱怨我需要用 try/catch 包围它。

如果我用 try/catch 包围它:

Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable throwable) {
        try {
            Log.e(getMethodName(2), "uncaughtException", throwable);
            throw throwable;
        }
        catch (Exception e) {           
        }
        finally {               
        }
    }
});

编译器仍然抱怨throw throwable需要用 try/catch 包围。

我如何重新扔那个可扔的东西?这样除了信息丰富的Log.e()系统的行为与以前完全相同:我从未设置默认的 UncaughtException 处理程序。


Try:

public class CustomExceptionHandler implements UncaughtExceptionHandler {

    private UncaughtExceptionHandler defaultUEH;

    public CustomExceptionHandler() {
        this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
    }

    public void uncaughtException(Thread t, Throwable e) {
        Log.e("Tag", "uncaughtException", throwable);
        defaultUEH.uncaughtException(t, e);
    }
}

进而Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler());

改编自this https://stackoverflow.com/questions/601503/how-do-i-obtain-crash-data-from-my-android-application answer.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重新抛出异常 的相关文章

随机推荐