gpt4 book ai didi

Java uncaughtExceptionHandler 不工作

转载 作者:太空狗 更新时间:2023-10-29 14:23:45 25 4
gpt4 key购买 nike

我有一个全局异常处理例程,它在运行时异常中包装了一些异常

像这样

public class ExceptionHandler
{
public static void handle(){
throw new RuntimeException(e);
}
}

ExceptionHandler 类中我还有一个静态构造函数

static
{
Thread.UncaughtExceptionHandler h = new Thread.UncaughtExceptionHandler()
{
@Override
public void uncaughtException(Thread thread, Throwable throwable)
{
Throwable t;
t = throwable;
if (throwable.getCause() != null)
t = throwable.getCause();
Log.e(t.getClass().getName(), t.getMessage(), t);
}
};
Thread.currentThread().setUncaughtExceptionHandler(h);
Thread.setDefaultUncaughtExceptionHandler(h);
}

问题是,在抛出一个 RTE 之后它没有进入 UncaughtExceptionHandler。为什么?

顺便说一句,我不能把它放到 main 方法中,因为我的 Android 程序中没有 main。

最佳答案

您可以继承 Application 类并在 onCreate() 方法中初始化您的 ExceptionHandler

public class YourApplication extends Application {

@Override
public void onCreate() {
super.onCreate();

Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());
}
}

并在那里实现你的异常处理程序

private class ExceptionHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
processUncaughtException(thread, throwable);
}
}

您可能还想维护默认的异常处理程序,这样您就可以在设置它之前完成它

defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();

关于Java uncaughtExceptionHandler 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254933/

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