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 https://web.archive.org/web/20201025132525/https://www.ibm.com/developerworks/library/j-jtp05236/index.html
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 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.
try { ... } catch (@SuppressWarnings("InterruptedExceptionSwallowed") Exception e) { throw new IllegalStateException(e); }