Sobes.tech
Middle

O que é o tipo Never na linguagem Dart?

sobes.tech IA

Resposta da IA

O tipo Never é um indicador de que uma expressão nunca terminará com sucesso. É usado para funções e métodos que ou lançam uma exceção ou entram num ciclo infinito.

Exemplos de uso:

  • Função que lança uma exceção:

    Never _throwError(String message) {
      // Lança uma exceção, a função nunca devolve um valor
      throw StateError(message);
    }
    
  • Função com um ciclo infinito:

    Never _infiniteLoop() {
      // Entra num ciclo infinito, a função nunca termina
      while (true) {
        // Fazer algo
      }
    }
    

A principal vantagem de Never é que ajuda o compilador a entender que o código após a chamada a essa função ou método não é atingível, permitindo realizar análise estática para detectar erros potenciais, como código inatingível e manipulação incorreta de erros.

Ao contrário de void, que indica que a função não devolve valor (mas termina com sucesso), Never indica que a função nunca terminará em princípio.

// Função que devolve void (termina com sucesso, mas sem valor)
void doSomething() {
  print('Fazendo algo');
}

// Função que devolve Never (nunca termina com sucesso)
Never crashAndBurn() {
  throw 'Oh não!';
}

O tipo Never é um tipo inferior (bottom type), ou seja, é um subtipo de qualquer outro tipo. Isto permite usar uma função que devolve Never em locais onde se espera qualquer outro tipo.