内容

throw_in_finally

避免在 finally 块中使用 throw

此规则从 Dart 2.0 开始可用。

详细信息

#

避免finally 块中抛出异常。

finally 块中抛出异常将不可避免地导致难以调试的意外行为。

糟糕

dart
class BadThrow {
  double nonCompliantMethod() {
    try {
      print('hello world! ${1 / 0}');
    } catch (e) {
      print(e);
    } finally {
      throw 'Find the hidden error :P'; // LINT
    }
  }
}

良好

dart
class Ok {
  double compliantMethod() {
    var i = 5;
    try {
      i = 1 / 0;
    } catch (e) {
      print(e); // OK
    }
    return i;
  }
}

用法

#

要启用 throw_in_finally 规则,请在您的 analysis_options.yaml 文件中的 **linter > rules** 下添加 throw_in_finally

analysis_options.yaml
yaml
linter:
  rules:
    - throw_in_finally