java - 线程为自己抛出 InterruptedException 是否正确?

标签 java exception

这就是我正在做的:

Stopwatch stopWatchToCheckTimeout;

void checkShutDown() throws InterruptedException {
  if (stopWatchToCheckTimeout.elapsed() >= MAX_GRACEFUL_TIMEOUT_DURATION) {
    throw new InterruptedException("Time to shut down now!");
  }
}

public Void mainFancyMethod() {
   try {
     while(true) {
       checkShutDown();
       // do fancy work
     }
   } catch (InterruptedException ex) {
     log.debug("Shutting down gracefully");
   }
   return null;
}

来自java/lang/InterruptedException文档我不清楚它是否应该是另一个应该中断的线程,或者一个线程是否可以为自己抛出这个异常?

为此用例抛出的最佳异常是什么?

最佳答案

看起来您正在使用异常代替控制流。有什么理由不能让 checkShutDown 返回 boolean 值吗?

boolean timedOut() {
  return (stopWatchToCheckTimeout.elapsed() >= MAX_GRACEFUL_TIMEOUT_DURATION)
}

关于java - 线程为自己抛出 InterruptedException 是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716929/

相关文章:

java - 使用两个事务管理器和 session 工厂以及 spring 和 hibernate 注释

java - Play : Unit test for controller class method w/injections

java - 具有类可见性的最佳实践

java - 检查 org.jooq.exception.DataAccessException 是否序列化失败

python - Discord.py discord.NotFound 异常

java - java sphinx程序中的错误

java - Android USB批量传输Teensy2++更新缓慢

java - 计算器问题

ruby-on-rails - 如何确定在 Ruby 中拯救异常的位置?

exception - 不允许在isolatedStorageFile流上进行操作