throw_in_finally 진단: finally 블록에서 throw 사용

throw_in_finally 진단: finally 블록에서 throw 사용

finally 블록은 try/catch의 성공 여부와 관계없이 항상 실행되는 부분이에요. 여기서 예외를 던지면 기존에 진행되던 흐름을 덮어써 버릴 수 있어요. throw_in_finallyfinally 블록 안에서 throw를 쓰는 걸 막아 주는 린트 진단이에요.

출처: throw_in_finally

본문

설명

분석기는 finally 블록 안에서 throw 문을 발견하면 이 진단을 만들어요.

예시

다음 코드는 finally 블록 안에 throw 문이 있어서 이 진단을 만들어요.

void f() {
  try {
    // ...
  } catch (e) {
    // ...
  } finally {
    throw 'error';
  }
}

흔한 해결 방법

throw 문이 finally 블록 안에 없도록 코드를 다시 작성해요.

void f() {
  try {
    // ...
  } catch (e) {
    // ...
  }
  throw 'error';
}

더 알아보기