catch 절의 on에 널 타입을 쓰지 못해요
catch 절의 on에 널 타입을 쓰지 못해요
nullable_type_in_catch_clause 진단은 catch 절의 on 뒤에 널 타입을 썼을 때 분석기가 알려 주는 메시지예요. "널일 수 있는 타입은 on 절에 쓸 수 없어요. 널 표현식은 던질 수 없으니까요"라는 뜻이에요.
본문
설명 (Description)
분석기는 catch 절에서 on 뒤에 오는 타입이 널 타입일 때 이 진단을 만들어 내요. 널 타입을 지정하는 건 유효하지 않아요. null을 잡는 게 불가능하거든요(null을 던지는 건 그 자체가 런타임 에러예요).
예시 (Example)
아래 코드는 예외 타입에 널을 허용하도록 지정했는데, 실제로는 null이 던져질 수 없어서 이 진단이 발생해요.
void f() {
try {
// ...
} on FormatException? {
// ...
}
}
흔한 해결책 (Common fixes)
타입에서 물음표(?)를 떼면 돼요.
void f() {
try {
// ...
} on FormatException {
// ...
}
}
더 알아보기
- Null safety — 널 안전성이 어디까지 적용되는지가 나와요.
- Exception handling — dart.dev —
try/catch/on절을 다루는 문법 문서예요. - 모든 진단 목록 — 분석기가 알려 주는 다른 진단도 살펴보세요.