目次

finallyブロック内の制御フロー

finally ブロック内での制御フローは避けてください。

このルールは Dart 2.0 以降で使用できます。

ルールセット: 推奨, flutter

詳細

#

避けるべき: finally ブロックから制御フローを抜けること。

finally ブロック内で制御フローを使用すると、デバッグが困難な予期しない動作が発生する可能性があります。

悪い例

dart
class BadReturn {
  double nonCompliantMethod() {
    try {
      return 1 / 0;
    } catch (e) {
      print(e);
    } finally {
      return 1.0; // LINT
    }
  }
}

悪い例

dart
class BadContinue {
  double nonCompliantMethod() {
    for (var o in [1, 2]) {
      try {
        print(o / 0);
      } catch (e) {
        print(e);
      } finally {
        continue; // LINT
      }
    }
    return 1.0;
  }
}

悪い例

dart
class BadBreak {
  double nonCompliantMethod() {
    for (var o in [1, 2]) {
      try {
        print(o / 0);
      } catch (e) {
        print(e);
      } finally {
        break; // LINT
      }
    }
    return 1.0;
  }
}

良い例

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

使用方法

#

control_flow_in_finally ルールを有効にするには、analysis_options.yaml ファイルの linter > rulescontrol_flow_in_finally を追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    - control_flow_in_finally