正在处理可能引发多种错误的应用程序。对于每种不同类型的错误,节点进程必须以不同的退出代码终止。
目前我正在抛出错误:
throw new Error1('Failed, because of reason 1');
throw new Error2('Failed, because of reason 2');
但是,这会导致进程在每次抛出错误时退出,退出代码为8。
我需要的是一种优雅的方法来根据抛出的错误抛出特定的退出代码。即当我抛出Error1时,它应该以代码1退出,当我抛出Error2时,它应该以代码2退出。
目前它只是以代码'8'退出。
我查看了其他文章,并且有人建议使用process.on('uncaughtException', ...);
会有效;然而它确实需要“捕捉”错误,重新打印出来然后退出。
有什么建议吗?
非常感谢。
答案 0 :(得分:4)
以下代码可让您按照自己的意愿行事:
Error8.prototype = Error.prototype
process.on('uncaughtException', handleErrors)
throw Error8("Bad news...")
function Error8(message) {
this.name = "Error8"
this.message = message || ''
this.errorCode = 8
}
function handleErrors (e) {
if (!e.errorCode) {
console.log('Unknown exception occurred')
process.exit(1)
}
console.log("ECODE-" + e.errorCode + ": " + e.message)
process.exit(e.errorCode)
}