catch 절의 on에 널 타입을 쓰지 못해요

catch 절의 on에 널 타입을 쓰지 못해요

nullable_type_in_catch_clause 진단은 catch 절의 on 뒤에 널 타입을 썼을 때 분석기가 알려 주는 메시지예요. "널일 수 있는 타입은 on 절에 쓸 수 없어요. 널 표현식은 던질 수 없으니까요"라는 뜻이에요.

출처: nullable_type_in_catch_clause

본문

설명 (Description)

분석기는 catch 절에서 on 뒤에 오는 타입이 널 타입일 때 이 진단을 만들어 내요. 널 타입을 지정하는 건 유효하지 않아요. null을 잡는 게 불가능하거든요(null을 던지는 건 그 자체가 런타임 에러예요).

예시 (Example)

아래 코드는 예외 타입에 널을 허용하도록 지정했는데, 실제로는 null이 던져질 수 없어서 이 진단이 발생해요.

void f() {
  try {
    // ...
  } on FormatException? {
    // ...
  }
}

흔한 해결책 (Common fixes)

타입에서 물음표(?)를 떼면 돼요.

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

더 알아보기