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) { // 예외가 읽혀서는 안 됩니다
}
}
// bad:
suspend fun suspendingFunction() {
try {
// ...
} catch (ProcessCanceledException e) {
LOG.error("Error occurred", e); // 예외가 로깅되어서는 안 됩니다
throw e;
}
}
// good:
cs.launch {
try {
// ...
} catch (ProcessCanceledException e) {
// additional actions
throw e;
}
}
2023.2의 새로운 기능