1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
This check warns when an `InterruptedException` could be thrown but isn't being
individually handled.
It is important for correctness and performance that thread interruption is
handled properly, however `try` blocks that catch `Exception` or `Throwable` (or
methods that `throws` either type) make it difficult to recognize that
interruption may occur.
For advice on how to handle `InterruptedException`, see http://web.archive.org/web/20201025132525/https://www.ibm.com/developerworks/library/j-jtp05236/index.html
## Suppression
Where possible, the best option is to enumerate the specific exceptions being
thrown/caught, so that `InterruptedException` is not possible. For example use
[multiple exception types](https://docs.oracle.com/javase/8/docs/technotes/guides/language/catch-multiple.html)
in a catch block instead of catching `Exception`.
Suppress false positives by adding an
`@SuppressWarnings("InterruptedExceptionSwallowed")` annotation to the enclosing
element, or the caught exception.
```java
try {
...
} catch (@SuppressWarnings("InterruptedExceptionSwallowed") Exception e) {
throw new IllegalStateException(e);
}
```
|