Pular para o conteúdo principal

control_flow_in_finally

Saiba mais sobre a regra de lint control_flow_in_finally.

Estável
Recomendado

Evite controle de fluxo em blocos finally.

Detalhes

#

EVITE controle de fluxo saindo de blocos finally.

Usar controle de fluxo em blocos finally inevitavelmente causará comportamentos inesperados que são difíceis de depurar.

RUIM:

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

RUIM:

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;
  }
}

RUIM:

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;
  }
}

BOM:

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

Ativar

#

Para ativar a regra control_flow_in_finally, adicione control_flow_in_finally em linter > rules no seu arquivo analysis_options.yaml:

analysis_options.yaml
yaml
linter:
  rules:
    - control_flow_in_finally

Se você usa a sintaxe de mapa YAML para configurar as regras de lint, adicione control_flow_in_finally: true em linter > rules:

analysis_options.yaml
yaml
linter:
  rules:
    control_flow_in_finally: true

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.