Pular para o conteúdo principal

throw_in_finally

Saiba mais sobre a regra de lint throw_in_finally.

Estável

Evite throw em bloco finally.

Detalhes

#

EVITE lançar exceções em blocos finally.

Lançar exceções em blocos finally inevitavelmente causará comportamentos inesperados que são difíceis de depurar.

RUIM:

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

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 throw_in_finally, adicione throw_in_finally em linter > rules no seu arquivo analysis_options.yaml:

analysis_options.yaml
yaml
linter:
  rules:
    - throw_in_finally

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

analysis_options.yaml
yaml
linter:
  rules:
    throw_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ê.