Cancellation exception handled incorrectly
Reports ProcessCanceledException
and CancellationException
handled incorrectly.
ProcessCanceledException
and its inheritors must not be caught, swallowed, logged, or handled in any way. Instead, it must be rethrown so that the IntelliJ Platform infrastructure can handle it correctly.
CancellationException
must not be caught, swallowed, logged, or handled in any way in coroutine context. Instead, it must be rethrown so that the coroutines infrastructure can handle it correctly.
Inspection reports both explicit ProcessCanceledException
(including inheritors) and CancellationException
catching, as well as catching RuntimeException
, Exception
and Throwable
covering cancellation exceptions.
// 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;
}
// bad:
cs.launch {
try {
// ...
} catch (e: CancellationException) { // exception should not be swallowed
}
}
// bad:
suspend fun suspendingFunction() {
try {
// ...
} catch (ProcessCanceledException e) {
LOG.error("Error occurred", e); // exception should not be logged
throw e;
}
}
// good:
cs.launch {
try {
// ...
} catch (ProcessCanceledException e) {
// additional actions
throw e;
}
}
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
IncorrectCancellationExceptionHandling
New in 2023.2
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Plugin DevKit, 243.23126 |
Thanks for your feedback!