body_might_complete_normally_catch_error 진단: catchError의 onError가 값을 반환하지 않을 때
body_might_complete_normally_catch_error 진단: catchError의 onError가 값을 반환하지 않을 때
body_might_complete_normally_catch_error는 Future.catchError 메서드의 onError로 넘긴 클로저가 필요한 값을 끝까지 반환하지 않고 끝날 때 Dart 분석기가 알려주는 진단이에요. 특히 그 클로저가 null이 아닌 값을 반환해야 하는 상황인데 암묵적으로 null을 반환하게 될 때 발생해요.
본문
설명
분석기는 Future.catchError 메서드의 onError 매개변수로 넘긴 클로저가 (그 Future의 타입 인자 때문에) null이 아닌 값을 반환해야 하는데, 암묵적으로 null을 반환할 수 있을 때 이 진단을 만들어요.
예시
다음 코드는 catchError 메서드로 넘긴 클로저가 int를 반환해야 하는데, 명시적인 return으로 끝나지 않아 암묵적으로 null을 반환하게 되기 때문에 이 진단을 만들어요.
void g(Future<int> f) {
f.catchError((e, st) {});
}
흔한 해결 방법
클로저가 때때로 null이 아닌 값을 반환해야 한다면, 클로저에 명시적인 return을 추가해요.
void g(Future<int> f) {
f.catchError((e, st) {
return -1;
});
}
클로저가 항상 null을 반환해야 한다면, Future의 타입 인자를 void나 Null로 바꿔요.
void g(Future<void> f) {
f.catchError((e, st) {});
}