我想调用Thread.sleep
,并传播InterruptException
,如果它确实被抛出。
的语法:
Interruptibles.sleep(1000);
相当于
try {
Thread.sleep(1000);
} catch (InterruptException e) {
throw Throwables.propagate(e);
}
在公共库(guava, apache commons等)中是否有类似的函数
在RuntimeException中包装很可能会导致痛苦。这是一个复杂的主题,我建议您阅读Java Concurrency in Practice中的相关章节,以充分了解您的选项。番石榴有sleepuninterruptible,它实现了其中一个标准的习语描述。
你可以这样做。
try {
Thread.sleep(1000);
} catch (InterruptException e) {
Thread.currentThread().interrupt();
}
或
try {
Thread.sleep(1000);
} catch (InterruptException e) {
Thread.currentThread().stop(e);
}
,但通常最好让异常"冒泡"到可以正确处理它的地方。您的IDE可以通过填写您需要的代码来简化此操作。