ScheduledExecutorService 的 UncaughtExceptionHandler 不起作用?

UncaughtExceptionHandler for ScheduledExecutorService doesn't work?

提问人:CoderBendl 提问时间:5/31/2023 最后编辑:AbraCoderBendl 更新时间:5/31/2023 访问量:23

问:

我这里有这个代码。我试图在不使用 try catch 或 检查异常的情况下获取有关调度程序中未检查异常的信息。我以为这将是最简单的方法,但它没有显示任何例外。为什么没有任何可见的输出?RunnableScheduledFuture

Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {
        
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            System.err.println("Exception in thread "+t.getName()+":");
            e.printStackTrace();                
        }
    };
    
    ThreadFactory tf = new ThreadFactory() {

        @Override
        public Thread newThread(Runnable r) {
            Thread t = new Thread(r);
            t.setUncaughtExceptionHandler(handler);
            return t;
        }
    };
    ScheduledExecutorService ses = new ScheduledThreadPoolExecutor(1, tf);
    ses.schedule(()->Objects.requireNonNull(null), 100, TimeUnit.MILLISECONDS);
Java scheduledexecutorservice uncaughtExceptionHandler 线程异常

评论

0赞 Progman 5/31/2023
您可能想看看其他问题,例如 stackoverflow.com/questions/3875739/......
0赞 Progman 5/31/2023
为什么不检查返回的实例,看看任务是否执行成功?ScheduledFuture
0赞 Progman 5/31/2023
这回答了你的问题吗?当线程中发生异常时,SchduledExecutorService 不执行 UncaughtExceptionHandler

答: 暂无答案