Como lidar com todas as exceções no nó.js
depois de trabalhar durante algumas semanas com o node.js, descobri que há uma diferença entre o nó.erros do servidor js e linguagens regulares do lado do servidor como PHP.
um exemplo simples: se um erro acontece em nosso site por qualquer razão.
em PHP
Se um usuário enviar alguns dados inválidos para o servidor e MySQL, o MySQL irá enviar um erro para esse usuário específico e toda a aplicação não irá abaixo.
Em Nodejs
Se um utilizador enviar alguns dados inválidos para o servidor e MySQL, o servidor nodejs irá abaixo e assim todos os usuários irão se desligar e não há mais nenhuma conexão entre os usuários.
Existe alguma maneira de lidar com quaisquer erros fatais desconhecidos e exceções a uma saída específica ou algo parecido.
2 answers
Você pode usar o eventouncaughtException no objecto do processo para fazer o que quiser, mas como outros disseram, são recomendados domínios e erros de captura/manipulação no nível correcto.
process.on('uncaughtException', function(err) {
console.log('Caught exception: ' + err);
});
Você deve simplesmente validar os dados do pedido dentro de suas rotas, pegar qualquer erro (tente-catch irá funcionar aqui, uma vez que é uma operação de sincronização) e lidar com ele, retornando o estado HTTP apropriado (por exemplo, 400) para a pessoa que ligou e registar o erro. Se você está usando Express você nem mesmo tem que usar try-catch como Express irá pegar todas as exceções síncronas e permitir que você lidar com isso centralmente.
Pessoalmente, não acho que apanhar erros de validação usando o processo.em ('uncaughtException') é the best match for your need for two main reasons:- Neste local, você não tem nenhum contexto de onde o erro ocorreu e não pode enviar uma resposta para o chamador
- qualquer tipo de erro não tratado chegará aqui, se você não tem idéia de que tipo de erro ocorreu é recomendado para reiniciar o processo. Não faz sentido reiniciar o processo por causa de entrada inválida, por exemplo, é muito fácil desta forma para trazer o aplicativo para baixo para qualquer ouvinte externo (DDOS)
Pode ler aqui outras boas práticas de manipulação de erros e referir-se especificamente às balas 4,6 e 10