Dart中catchError返回值不匹配运行时错误:如何提前通过分析选项检测?
无返回值导致Future.catchError错误处理函数类型不匹配问题
这是一个Dart运行时错误,当Future.catchError的错误处理函数返回值类型与原Future的类型不匹配(或无返回值)时触发。
示例代码
Future<int> nuclearPlant() async { await Future.delayed(Duration(seconds: 1)); throw "up"; return 999999999; } Future<void> main() async { final zillionVolts = await nuclearPlant().catchError((e) { // 此处忘记返回int类型值 // 会导致运行时错误 }); print(zillionVolts); coolDownPlant(); } void coolDownPlant() { print("Done, safely shutdown the plant."); }
运行时错误提示
无效参数(onError):Future.catchError的错误处理函数必须返回与Future类型匹配的值
需求与问题
想要通过Dart分析器提前检测该错误,但配置invalid_return_type_for_catch_error: error后未生效。
正确配置方案
要让Dart分析器提前捕获这类错误,需在项目根目录的analysis_options.yaml文件中正确配置规则,示例如下:
linter: rules: - invalid_return_type_for_catch_error: error
若为Flutter项目,可继承官方lint配置后添加该规则:
include: package:flutter_lints/flutter.yaml linter: rules: - invalid_return_type_for_catch_error: error
配置后若仍未生效,可尝试:
- 重启IDE的Dart分析服务
- 执行
dart analyze命令手动触发代码分析 - 检查是否存在其他配置覆盖了该规则
内容的提问来源于stack exchange,提问作者TSR
相关产品推荐
相关产品推荐

