use*_*723 5 exception-handling exception node.js
我正在使用节点进行服务器端处理 - 浏览大数据文件,然后插入数据库.这将在一个cron工作每晚运行.在程序中有几个需要完成的任务.我已经设置好,child_process以便正确完成这些不同的任务.但是,我希望整个事情都有一个错误处理部分.如果有任何步骤出错,我想发一封电子邮件给我,以便我知道.当我看到这个时,我认为它会捕获子进程中的错误,并允许我发送有问题的电子邮件.
process.on('error', function (err) {
console.log("Error running Scripts")
sendErr(err);
});
Run Code Online (Sandbox Code Playgroud)
但是我很快发现这只会在产生进程时捕获错误,而不是在实际执行中.但后来我找到了这个uncaughtException事件,并error在上面的代码中替换了uncaughtException.不幸的是,它没有像我希望的那样工作,代码没有运行,电子邮件也没有发送.有人知道怎么做,或者看我做错了什么.这是我目前的代码
var process = childProcess.fork(scriptName, {cwd:scriptWorkingDirectory});
process.on('uncaughtException', function (err) {
console.log("Error running Scripts")
sendErr(err);
});
Run Code Online (Sandbox Code Playgroud)
您必须process.on('uncaughtException', ...)在子进程中执行,而不是在父进程中执行。
父进程无法侦听子进程中的错误。您可以在父级中监听'end'子级的事件,以查看子级是否结束,但您无法仅根据退出代码判断它是否正常结束。
因此,在子进程中监听,uncaughtException然后您可以通过父进程从子进程向父进程发送消息,然后subprocess.send
可以根据需要发送邮件。