`dead_code_on_catch_subtype` — 이미 걸러진 하위 타입의 `catch` 절
dead_code_on_catch_subtype — 이미 걸러진 하위 타입의 catch 절
어떤 on-catch 절이 이미 같은 타입이나 상위 타입을 잡는 절 뒤에 있어서 절대 실행되지 못하면, 분석기가 이 진단을 알려줘요. catch 절 순서 때문에 진단이 발생한다고 보면 돼요.
본문
그 절의 타입과 같은 타입이나 상위 타입을 잡는 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 {
// ...
}
}