`dead_code_catch_following_catch` — `catch` 다음에 오는 `catch` 절

dead_code_catch_following_catchcatch 다음에 오는 catch

catch (e)on Object catch (e)처럼 모든 객체를 잡는 절 뒤에 다른 catch 절이 오면, 그 뒤의 절은 절대 선택되지 않아요. 분석기가 이 진단으로 알려줘요.

출처: dead_code_catch_following_catch

본문

catch (e)on Object catch (e) 형태의 catch 절 뒤에 있어서 실행될 수 없는 catch 절을 발견하면 이 진단이 발생해요. 던져진 객체에 첫 번째로 매칭되는 catch 절이 선택되는데, 두 형태 모두 어떤 객체든 매칭되기 때문에 뒤에 오는 catch 절은 선택될 일이 없어요.

예시

아래 코드는 이 진단을 발생시켜요.

void f() {
  try {
    // ...
  } catch (e) {
    // Not reached.
  } on String {
    // ...
  }
}

흔한 해결 방법

그 절이 선택되어야 한다면, 일반적인 절보다 앞으로 옮겨 주면 돼요.

void f() {
  try {
    // ...
  } on String {
    // ...
  } catch (e) {
    // ...
  }
}

그 절이 선택될 필요가 없다면, 그냥 제거해 주면 돼요.

void f() {
  try {
    // ...
  } catch (e) {
    // ...
  }
}

더 알아보기