内容

避免_不带_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.errorCompleter.completeErrorFlutterError.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