2016-02-22 18 views
6

AS Mamy filtr Exception w asp.net MVC, czy mamy podobny rodzaj funkcjonalności w node.js z ekspresowym 4 również?Najlepszy sposób na globalne radzenie sobie z wyjątkami w Node.js z Express 4?

Próbowałem następujących artykułów, ale nie znalazłem pożądanego rozwiązania.

http://www.nodewiz.biz/nodejs-error-handling-pattern/

Próbowałem również poniżej na app.js

process.on('uncaughtException', function (err) { 
    console.log(err); 
}) 

ref artykuł: http://shapeshed.com/uncaught-exceptions-in-node/

Każda pomoc będzie odczuwalny.

Odpowiedz

-3

Aby dodać globalne wyjątki, procedury obsługi w węźle są zdarzeniami pod numerem process. Użyj process.on, aby je złapać.

process.on('uncaughtException', (err) => { 
    console.log('whoops! there was an error'); 
}); 
+0

nie łapie wyjątków na całym świecie. –

+0

@AshishKumar: Jakie błędy otrzymujesz, które próbujesz złapać? – bolav

+0

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. –

2

W trybie ekspresowym standardową praktyką jest posiadanie uchwytu do obsługi wszystkich błędów. Procedura obsługi Barebone błąd wyglądałby

// Handle errors 
app.use((err, req, res, next) => { 
    if (! err) { 
     return next(); 
    } 

    res.status(500); 
    res.send('500: Internal server error'); 
}); 

Wraz z tym, trzeba będzie nadrobić błędy mogą zdarzyć się wszędzie i przekazać je jako param w next(). To sprawi, że catch all handler wykryje błędy.

+1

Jak już wyszukiwać w google i znaleźć to rozwiązanie do teraz w express, ale szukam czegoś podobnego filtr wyjątku asp.net mvc –

8

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)