avoid_catches_without_on_clauses
避免使用没有 on 子句的 catch。
详情
#避免 使用没有 on 子句的 catch。
使用没有 on 子句的 catch 子句会使您的代码容易遇到意外错误,这些错误不会被抛出(因此会被忽略)。
不良示例
dart
try {
somethingRisky()
} catch(e) {
doSomething(e);
}
良好示例
dart
try {
somethingRisky()
} on Exception catch(e) {
doSomething(e);
}
允许一些例外情况
- 如果 catch 的主体重新抛出异常。
- 如果捕获的异常“直接使用”在
Future.error
、Completer.completeError
或FlutterError.reportError
的参数中,或者任何返回类型为Never
的函数中。 - 如果捕获的异常“直接使用”在新的 throw 表达式中。
在这些情况下,“直接使用”意味着异常在相关代码(例如在参数中)中被引用。如果异常变量在相关代码之前被引用,例如实例化一个包装器异常,则该变量不被“直接使用”。
启用
#要启用 avoid_catches_without_on_clauses
规则,请在您的 analysis_options.yaml
文件中的 linter > rules 下添加 avoid_catches_without_on_clauses
analysis_options.yaml
yaml
linter:
rules:
- avoid_catches_without_on_clauses
如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 avoid_catches_without_on_clauses: true
analysis_options.yaml
yaml
linter:
rules:
avoid_catches_without_on_clauses: true
除非另有说明,否则本网站上的文档反映了 Dart 3.7.1 版本。页面上次更新于 2025-03-07。 查看源代码 或 报告问题。