flutter - 在 Dart 中减少 try-catch 块的冗长
问题描述
我有很多网络调用,并且 try-catch 块非常冗长,削减这个样板的最佳方法是什么?我想这样替换
Future<Something> getSomething(String id) async {
try {
return await _api.getSomething(id);
} on DioError catch (error) {
return Future.error(error.formattedMessage);
}
}
能够称呼某物
Future<Something> getSomething(String id) async {
networkCall { _api.getSomething(id); }
}
Dart 中是否有可以让我实现这一目标的构造?
解决方案
不,没有语言功能可以满足您的需求。
如果您只是希望函数完成DioError
并且不需要创建新的异常,您可以删除 try/catch 块并让调用者处理错误。
如果您确实想经常对特定类型的异常进行一些处理,您总是可以编写一个包装器方法来做到这一点:
Future<T> handleDioError<T>(Future<T> Function() f) async {
try {
return await f();
} on DioError catch(e) {
return Future.error(error.formattedMessage);
}
}
你会像这样使用它:
Future<Something> getSomething(String id) async {
return await handleDioError(() => _api.getSomething(id));
}
推荐阅读
- javascript - 我可以滚动到另一个组件模板中的 HTML 元素吗?
- asp.net - docker asp.net 日志配置也启用日志错误
- c++ - AXI 协议中的突出行为
- sapui5 - 单击选择中的任何项目时触发事件(即使在选定的项目上)
- python - 如何在 Python 中序列化 json?
- c - 为什么 Valgrind 抱怨 fgets?
- java - JdbcTemplate - 没有可用类型的限定 bean
- javascript - 如何根据SectionList中的键在ui上填充数组的值
- android - Android中的TimePickerDialog并添加到数据库
- discord - 如何通过不和谐机器人列出用户