From d227197628c41f6a63d384be22de912711f1bb97 Mon Sep 17 00:00:00 2001 From: tobiasnickel Date: Sat, 6 Aug 2016 16:23:44 +0800 Subject: [PATCH 1/2] improved error-handling for handlers improved capabilities for after filters --- lib/common/service/handlerService.js | 29 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/common/service/handlerService.js b/lib/common/service/handlerService.js index 671e12377..765783007 100644 --- a/lib/common/service/handlerService.js +++ b/lib/common/service/handlerService.js @@ -34,17 +34,24 @@ Service.prototype.handle = function(routeRecord, msg, session, cb) { return; } var start = Date.now(); - - handler[routeRecord.method](msg, session, function(err, resp, opts) { - var log = { - route : msg.__route__, - args : msg, - time : utils.format(new Date(start)), - timeUsed : new Date() - start - }; - forwardLogger.info(JSON.stringify(log)); - utils.invokeCallback(cb, err, resp, opts); - }); + try{ + handler[routeRecord.method](msg, session, function(err, resp, opts) { + var log = { + route : msg.__route__, + args : msg, + time : utils.format(new Date(start)), + timeUsed : new Date() - start + }; + if(typeof resp === 'undefined') resp = {}; + forwardLogger.info(JSON.stringify(log)); + utils.invokeCallback(cb, err, resp, opts); + }); + }catch(err){ + process.nextTick(function(){ + var opts; + utils.invokeCallback(cb, err, {}, opts); + }); + } return; }; From 0a2c1ee67cc1d5ba7f0f11dfa6ef2146db53c77c Mon Sep 17 00:00:00 2001 From: tobiasnickel Date: Sat, 13 Aug 2016 19:50:44 +0800 Subject: [PATCH 2/2] new features configurable using app.set --- lib/common/service/handlerService.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/common/service/handlerService.js b/lib/common/service/handlerService.js index 765783007..7e29741b9 100644 --- a/lib/common/service/handlerService.js +++ b/lib/common/service/handlerService.js @@ -42,15 +42,19 @@ Service.prototype.handle = function(routeRecord, msg, session, cb) { time : utils.format(new Date(start)), timeUsed : new Date() - start }; - if(typeof resp === 'undefined') resp = {}; + if(typeof resp === 'undefined' && this.app.get('enfrceHandlerResponse')) resp = {}; forwardLogger.info(JSON.stringify(log)); utils.invokeCallback(cb, err, resp, opts); }); }catch(err){ - process.nextTick(function(){ - var opts; - utils.invokeCallback(cb, err, {}, opts); - }); + if(this.app.get('catchHandlerErrors')){ + process.nextTick(function(){ + var opts; + utils.invokeCallback(cb, err, {}, opts); + }); + }else{ + throw err; + } } return; };