Błędy mogą pochodzić z różnych lokalizacji, dlatego zaleca się obsługę błędów w scentralizowanym obiekcie, który obsługuje wszystkie typy błędów. Na przykład, błąd może występuje w następujących miejscach:
1.Express middleware w przypadku błędu SYNC w żądaniu internetowej
app.use(function (err, req, res, next) {
//call handler here
});
2.CRON pracy (zaplanowane zadania)
3.Your skrypt inicjalizacji
kod 4.Testing
5.Uncaught błąd skądś
process.on('uncaughtException', function(error) {
errorManagement.handler.handleError(error);
if(!errorManagement.handler.isTrustedError(error))
process.exit(1)
});
6.Unhandled obietnica odrzucenie
process.on('unhandledRejection', function(reason, p){
//call handler here
});
Potem, kiedy można złapać błędy, przekazać je do scentralizowanej obsługi błędów:
module.exports.handler = new errorHandler();
function errorHandler(){
this.handleError = function (error) {
return logger.logError(err).then(sendMailToAdminIfCritical).then(saveInOpsQueueIfCritical).then(determineIfOperationalError);
}
Aby uzyskać więcej informacji read bullet 4' here (+ inne sprawdzone metody i ponad 35 ofert i kodu examp les)
nie łapie wyjątków na całym świecie. –
@AshishKumar: Jakie błędy otrzymujesz, które próbujesz złapać? – bolav
Jeśli w całej aplikacji wystąpi wyjątek, powinien obsługiwać z jednego miejsca. jak robimy w asp.net mvc przy użyciu filtra wyjątków. –