gpt4 book ai didi

java - 将 TimerTask 中的异常抛给另一个方法

转载 作者:行者123 更新时间:2023-11-30 08:29:02 26 4
gpt4 key购买 nike

我想将以下异常抛给另一个方法,但我不知道如何正确实现。

  public void startTimeoutHandler() throws TimeoutException
{
timer = new Timer();
timerTask = new TimerTask()
{
@Override
public void run()
{
throw new TimeoutException();
}
};
}

谢谢!

最佳答案

  • A TimerTask实际上是 Runnable 的实现这是一个相当有限的抽象; run()不能返回值或抛出检查异常。

  • 使用 Callable<V> : 这也是为实例可能由另一个线程执行但不同于 Runnable 的类设计的,它是 call()方法可以返回结果并抛出已检查的异常

    class MyTask implements Callable<Integer>{

    @Override
    public Integer call() throws TimeoutException{
    throw new TimeoutException();
    }
    }

    void usingCallable(MyTask e) {
    e.call(); // error: must catch Exception
    }
  • 用于调度任务 ScheduledThreadPoolExecutor :一个 ExecutorService,它可以安排命令在给定的延迟后运行,或定期执行。它有一个很好的功能:

     <V> ScheduledFuture<V>  schedule(Callable<V> callable, long delay, TimeUnit unit)

关于java - 将 TimerTask 中的异常抛给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19795448/

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