跳到主要内容

avoid_catches_without_on_clauses

稳定

避免使用没有 on 子句的 catch。

详情

#

来自 Effective 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

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 avoid_catches_without_on_clauses: true

analysis_options.yaml
yaml
linter:
  rules:
    avoid_catches_without_on_clauses: true