避免_不带_on_子句的_catch
避免使用不带 on 子句的 catch。
此规则从 Dart 2.0 起可用。
详情
#来自有效的 Dart
避免使用不带 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
除非另有说明,否则本网站上的文档反映的是 Dart 3.6.0。页面最后更新于 2024-07-03。 查看源代码或 报告问题。