[Node.JS] Como evitar que erros não capturados derrubem seu servidor
Erros ou exceptions
lançadas dentro de funções assíncronas (async
) ou dentro de timers (setTimeout
e setInterval
) que não estejam tratados em blocos catch
podem acabar encerrando o processo principal de um servidor Node.JS.
Para evitar isto, basta colocar este código em seu arquivo principal:
process.on('uncaughtException', console.error)
Ele irá escutar pelo evento uncaughtException
e executar a função fornecida.
Quando houver uma excessão não tratada, a função console.error
vai recebê-la e não irá fechar o processo, ao invés disso, irá apenas mostrar o erro no console.
Caso você não queira mostrar o erro no console, ou fazer algo diferente com o erro, basta usar uma função anônima.
process.on('uncaughtException', (err) => {
// Faça o que quiser com o erro aqui
})