当前位置: 首页 > 知识库问答 >
问题:

如何用nodejs child_process.spawn捕获ENOENT?

孔和风
2023-03-14

我正在使用spawn生成一个长时间运行的进程,该进程随时间将输出发送到stdio,并由我的nodejs脚本读取和处理。棘手的部分是,我不能保证发送的命令永远有效。如何捕捉产卵错误?最好不要安装全局异常处理程序,因为我不想处理任何其他异常。(如果这是唯一的方法,我将需要弄清楚生成的进程何时正确启动,然后卸载处理程序,这是一个我不想陷入的混乱。)

我要运行的代码如下所示:

var spawn = require('child_process').spawn;

try {
    spawn("zargle");
} catch (e) {
    console.error("I'm handling the error!");
}

我清楚地知道为什么我会被告知,我知道要改变什么以避免错误发生。我的问题是,如果错误不可避免,如何优雅地应对这种情况。

共有1个答案

冯曾笑
2023-03-14

与node中的许多事情一样,子进程可以发出error事件。为此添加一个侦听器,您将能够捕获它(不需要try-catch):

var spawn = require('child_process').spawn;
var child = spawn('foo');
child.on('error', function(err) {
  console.log('Oh noez, teh errurz: ' + err);
});
 类似资料:
  • 我已经在tomcat 7.0.55中部署了一个应用程序进行测试。我想捕获“HeapDumpOnOutOfMemoryError”是否正在发生。以下是我的JVM参数。 JAVA_OPTS="-server-Xms512M-Xmx2048M-XX: PermSize=256m-XX: MaxPermSize=512m-XX: UseConcMarkSweepGC-XX: UseParNewGC-XX:

  • 问题内容: 我用来产生一个长时间运行的进程,该进程会随着时间的推移将输出发送到stdio,并由我的nodejs脚本读取和处理。棘手的是,我不能保证发送的命令将始终有效。如何在生成中捕获错误?最好不要涉及安装全局异常处理程序,因为我不想处理任何其他异常。(如果那是唯一的方法,我将需要弄清楚何时生成的进程已正确启动,然后卸载该处理程序,这是我不愿陷入的一团糟。) 我要运行的代码如下所示: 但这只会在节

  • 本文向大家介绍如何捕获 setTimeout 异常相关面试题,主要包含被问及如何捕获 setTimeout 异常时的应答技巧和注意事项,需要的朋友参考一下 No description provided.

  • 问题内容: 我在Java中有一个应用程序,其中我尝试确保如果有人在代码中退出代码System.exit(),则应调用侦听器来执行某些操作,例如记录消息并释放资源… 我如何实施它,欢迎任何建议/方法。 问题答案: 该方法可用于添加一个关闭钩子,该钩子基本上是未启动的,该钩子在Java虚拟机关闭时执行。 但是,这是应该谨慎对待的领域,因为它是在JVM生命周期的非常敏感的时间执行的。从API规范中获取该

  • 问题内容: 例如,假设我有, 看到我需要从输出中获取旧ID和新ID。但是此sql给我错误“无效的列名’ID’。” http://sqlfiddle.com/#!3/a27b2/1 问题答案: 您不能使用传统输出非插入字段。请改用合并(注意:仅在数据库兼容性> = 100时有效):

  • 问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I