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.