gpt4 book ai didi

java - 如何重新抛出异常

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:13 24 4
gpt4 key购买 nike

在我的 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());
}
});

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

如果我尝试用 throw throwable 替换 KillProcess() 调用,编译器会提示我需要用 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 处理程序。

最佳答案

尝试:

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回答。

关于java - 如何重新抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com