13. Manipulação de erros em NodeJS
Página 81 | Ouça em áudio
Manipular erros em NodeJS é uma habilidade essencial para qualquer desenvolvedor. Erros podem ocorrer em qualquer aplicação, seja devido a um problema no código, um problema com os dados de entrada ou um problema com o ambiente de execução. Portanto, é crucial que sua aplicação possa lidar com erros de maneira graciosa e informativa.
Em NodeJS, erros são representados por objetos de erro. Um objeto de erro é criado usando a palavra-chave 'new' seguida pelo nome 'Error'. Por exemplo: 'new Error('Este é um erro')'. Este objeto de erro pode ser então lançado usando a palavra-chave 'throw'. Por exemplo: 'throw new Error('Este é um erro')'.
Uma vez que um erro foi lançado, ele pode ser capturado e manipulado usando um bloco 'try/catch'. O bloco 'try' contém o código que pode lançar um erro, enquanto o bloco 'catch' contém o código que manipula o erro. Por exemplo:
try { throw new Error('Este é um erro'); } catch (err) { console.error(err.message); }
O código acima irá imprimir 'Este é um erro' no console. Note que o objeto de erro é passado para o bloco 'catch' como 'err' e que a mensagem de erro pode ser acessada como 'err.message'.
Além da mensagem de erro, o objeto de erro também contém uma propriedade 'stack' que fornece um rastreamento de pilha do erro. O rastreamento de pilha é uma lista de funções que foram chamadas, em ordem, até o ponto onde o erro foi lançado. Isso pode ser extremamente útil para depurar erros.
Em NodeJS, existem várias classes de erro incorporadas que você pode usar para representar diferentes tipos de erros. Por exemplo, 'RangeError' pode ser usado para representar um erro que ocorre quando um valor está fora do intervalo de valores aceitáveis, e 'TypeError' pode ser usado para representar um erro que ocorre quando um valor não é do tipo esperado. Cada uma dessas classes de erro tem sua própria mensagem de erro padrão, mas você também pode fornecer sua própria mensagem de erro.
Além de usar as classes de erro incorporadas, você também pode criar suas próprias classes de erro personalizadas. Isso pode ser útil se você quiser representar erros específicos do seu aplicativo. Para criar uma classe de erro personalizada, você pode estender a classe 'Error'. Por exemplo:
class CustomError extends Error { constructor(message) { super(message); this.name = 'CustomError'; } }
Você pode então lançar e capturar 'CustomError' da mesma maneira que você faria com qualquer outro erro.
Outra coisa importante a notar sobre a manipulação de erros em NodeJS é que erros não capturados resultarão no término do processo NodeJS. Isso significa que se um erro for lançado e não for capturado por um bloco 'try/catch', sua aplicação irá falhar. Para evitar isso, você pode adicionar um manipulador de eventos 'uncaughtException' ao objeto 'process'. Este manipulador de eventos será chamado sempre que um erro não capturado for lançado. Por exemplo:
process.on('uncaughtException', (err) => { console.error('Erro não capturado:', err); });
Isso irá imprimir a mensagem de erro e o rastreamento de pilha no console, mas não irá prevenir que o processo termine. Se você quiser que sua aplicação continue rodando mesmo após um erro não capturado, você pode adicionar 'process.exit(1)' ao final do manipulador de eventos. No entanto, isso deve ser feito com cuidado, pois pode resultar em um estado inconsistente do aplicativo.
Em resumo, a manipulação de erros em NodeJS é feita através do lançamento e captura de objetos de erro. NodeJS fornece várias classes de erro incorporadas que você pode usar, mas você também pode criar suas próprias classes de erro personalizadas. Erros não capturados resultarão no término do processo NodeJS, a menos que um manipulador de eventos 'uncaughtException' seja adicionado ao objeto 'process'.
Agora responda o exercício sobre o conteúdo:
Como é feita a manipulação de erros em NodeJS?
Você acertou! Parabéns, agora siga para a próxima página
Você errou! Tente novamente.
Próxima página do Ebook Gratuito: