`dead_code_on_catch_subtype` — 이미 걸러진 하위 타입의 `catch` 절

dead_code_on_catch_subtype — 이미 걸러진 하위 타입의 catch

어떤 on-catch 절이 이미 같은 타입이나 상위 타입을 잡는 절 뒤에 있어서 절대 실행되지 못하면, 분석기가 이 진단을 알려줘요. catch 절 순서 때문에 진단이 발생한다고 보면 돼요.

출처: dead_code_on_catch_subtype

본문

그 절의 타입과 같은 타입이나 상위 타입을 잡는 catch 절 뒤에 있어서 실행될 수 없는 catch 절을 발견하면 이 진단이 발생해요. 던져진 객체에 첫 번째로 매칭되는 catch 절이 선택되는데, 앞의 절이 강조된 절이 매칭할 수 있는 것은 무엇이든 항상 매칭하므로 강조된 절은 선택될 일이 없어요.

예시

아래 코드는 on int 절이 on num 절 뒤에 와서 이 진단을 발생시켜요.

void f() {
  try {
    // ...
  } on num {
    // ...
  } on int {
    // ...
  }
}

흔한 해결 방법

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

void f() {
  try {
    // ...
  } on int {
    // ...
  } on num {
    // ...
  }
}

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

void f() {
  try {
    // ...
  } on num {
    // ...
  }
}

더 알아보기