ProcessCanceledException と CancellationException が誤って処理されていることを報告します。
ProcessCanceledException とその継承はいかなる方法でもキャッチ、読み込み、ログ、または処理できません。
代わりに、IntelliJ Platform インフラストラクチャが正しく処理できるように再度スローしなければなりません。
CancellationException は、コルーチンコンテキスト内でいかなる方法でもキャッチ、読み込み、ログまたは処理できません。
代わりに、コルーチンインフラストラクチャが正しく処理できるように再度スローしなければなりません。
インスペクションにより、明示的な ProcessCanceledException (継承を含む) と CancellationException のキャッチ、またキャンセル例外をカバーする RuntimeException、Exception および Throwable のキャッチが報告されます。
ProcessCanceledException:
// bad:
try {
// ...
} catch (ProcessCanceledException e) { // 例外は読み込まれるべきではありません
}
// 悪い:
try {
// ...
} catch (ProcessCanceledException e) {
LOG.error("Error occurred", e); // 例外はログされるべきではありません
throw e;
}
// 良い:
try {
// ...
} catch (ProcessCanceledException e) {
// 追加のアクション
throw e;
}
CancellationException:
// bad:
cs.launch {
try {
// ...
} catch (e: CancellationException) { // 例外は読み込まれるべきではありません
}
}
// 不適切:
suspend fun suspendingFunction() {
try {
// ...
} catch (ProcessCanceledException e) {
LOG.error("Error occurred", e); // 例外はログされるべきではありません
throw e;
}
}
// 適切:
cs.launch {
try {
// ...
} catch (ProcessCanceledException e) {
// additional actions
throw e;
}
}
2023.2 の新機能です