ProcessCanceledExceptionCancellationException が誤って処理されていることを報告します。

ProcessCanceledException とその継承はいかなる方法でもキャッチ、読み込み、ログ、または処理できません。 代わりに、IntelliJ Platform インフラストラクチャが正しく処理できるように再度スローしなければなりません。

CancellationException は、コルーチンコンテキスト内でいかなる方法でもキャッチ、読み込み、ログまたは処理できません。 代わりに、コルーチンインフラストラクチャが正しく処理できるように再度スローしなければなりません。

インスペクションにより、明示的な ProcessCanceledException (継承を含む) と CancellationException のキャッチ、またキャンセル例外をカバーする RuntimeExceptionException および 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 の新機能です