Reports ProcessCanceledExceptions handled in an incorrect way.

ProcessCanceledException and its inheritors must not be caught, swallowed, logged, or handled in any way. Instead, it must be rethrown so that the infrastructure can handle it correctly.

Inspection reports both explicit ProcessCanceledException or its inheritors catching, as well as catching RuntimeException, Exception and Throwable covering ProcessCanceledException.

Example:


// bad:
try {
  // ...
} catch (ProcessCanceledException e) { // exception should not be swallowed
}

// bad:
try {
  // ...
} catch (ProcessCanceledException e) {
  LOG.error("Error occurred", e); // exception should not be logged
  throw e;
}


// good:
try {
  // ...
} catch (ProcessCanceledException e) {
  // additional actions
  throw e;
}

New in 2023.2