这就是我在做什么:
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 timedOut() {
return (stopWatchToCheckTimeout.elapsed() >= MAX_GRACEFUL_TIMEOUT_DURATION)
}