From 71172545e5f3c19e176f73d2ce48628cfafc2de3 Mon Sep 17 00:00:00 2001 From: "Eslam A. Hefnawy" Date: Wed, 20 Jul 2016 19:11:13 +0900 Subject: [PATCH] hanlding errors in error handling logic --- lib/classes/Error.js | 100 ++++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 48 deletions(-) diff --git a/lib/classes/Error.js b/lib/classes/Error.js index ce8f4bf5a..3effaad04 100644 --- a/lib/classes/Error.js +++ b/lib/classes/Error.js @@ -11,62 +11,66 @@ module.exports.SError = class ServerlessError extends Error { }; module.exports.logError = (e) => { - const consoleLog = (message) => { - console.log(message); // eslint-disable-line no-console - }; + try { + const consoleLog = (message) => { + console.log(message); // eslint-disable-line no-console + }; - const errorType = e.name.replace(/([A-Z])/g, ' $1'); - let line = ''; - while (line.length < 56 - errorType.length) { - line = `${line}-`; - } - - consoleLog(' '); - consoleLog(chalk.yellow(` ${errorType} ${line}`)); - consoleLog(' '); - - // format error message to fit neatly - const words = e.message.split(' '); - let logLine = []; - words.forEach(word => { - logLine.push(word); - const logLineString = logLine.join(' '); - if (logLineString.length > 50) { - consoleLog(chalk.yellow(` ${logLineString}`)); - logLine = []; + const errorType = e.name.replace(/([A-Z])/g, ' $1'); + let line = ''; + while (line.length < 56 - errorType.length) { + line = `${line}-`; } - }); - if (logLine.length !== 0) { - consoleLog(chalk.yellow(` ${logLine.join(' ')}`)); - } - - consoleLog(' '); - - if (e.name !== 'ServerlessError') { - consoleLog(chalk.red(' For debugging logs, run again after setting SLS_DEBUG env var.')); consoleLog(' '); - } - - if (process.env.SLS_DEBUG) { - consoleLog(chalk.yellow(' Stack Trace --------------------------------------------')); + consoleLog(chalk.yellow(` ${errorType} ${line}`)); consoleLog(' '); - consoleLog(e.stack); + + // format error message to fit neatly + const words = e.message.split(' '); + let logLine = []; + words.forEach(word => { + logLine.push(word); + const logLineString = logLine.join(' '); + if (logLineString.length > 50) { + consoleLog(chalk.yellow(` ${logLineString}`)); + logLine = []; + } + }); + + if (logLine.length !== 0) { + consoleLog(chalk.yellow(` ${logLine.join(' ')}`)); + } + consoleLog(' '); - } - consoleLog(chalk.yellow(' Get Support --------------------------------------------')); - consoleLog(`${chalk.yellow(' Docs: ')}${chalk.white('v1.docs.serverless.com')}`); - consoleLog(`${chalk.yellow(' Bugs: ')}${chalk - .white('github.com/serverless/serverless/issues')}`); + if (e.name !== 'ServerlessError') { + consoleLog(chalk.red(' For debugging logs, run again after setting SLS_DEBUG env var.')); + consoleLog(' '); + } + + if (process.env.SLS_DEBUG) { + consoleLog(chalk.yellow(' Stack Trace --------------------------------------------')); + consoleLog(' '); + consoleLog(e.stack); + consoleLog(' '); + } + + consoleLog(chalk.yellow(' Get Support --------------------------------------------')); + consoleLog(`${chalk.yellow(' Docs: ')}${chalk.white('v1.docs.serverless.com')}`); + consoleLog(`${chalk.yellow(' Bugs: ')}${chalk + .white('github.com/serverless/serverless/issues')}`); + + if (e.name !== 'ServerlessError') { + consoleLog(' '); + consoleLog(chalk.red(' Please report this error. We think it might be a bug.')); + } - if (e.name !== 'ServerlessError') { consoleLog(' '); - consoleLog(chalk.red(' Please report this error. We think it might be a bug.')); + + // Failure exit + process.exit(1); + } catch (errorHandlingError) { + throw new Error(e); } - - consoleLog(' '); - - // Failure exit - process.exit(1); };