我想致电Thread.sleep
,并传播InterruptException
,如果它确实被抛出。
虚构语法:
Interruptibles.sleep(1000);
相当于
try {
Thread.sleep(1000);
} catch (InterruptException e) {
throw Throwables.propagate(e);
}
在公共库(guava,apache commons等)中是否有类似的功能。
答案 0 :(得分:9)
在RuntimeException中包装可能会导致痛苦。 这是一个复杂的主题,我推荐Java Concurrency in Practice中的相关部分来完全理解您的选择 Guava有sleepUninterruptibly,它实现了那里描述的标准习语之一。
答案 1 :(得分:3)
你可以这样做。
try {
Thread.sleep(1000);
} catch (InterruptException e) {
Thread.currentThread().interrupt();
}
或
try {
Thread.sleep(1000);
} catch (InterruptException e) {
Thread.currentThread().stop(e);
}
但通常最好让异常“冒泡”到可以正确处理的地方。您的IDE可以通过填写您需要的代码来简化这一过程。