Как поймать ENOENT с помощью nodejs child_process.spawn?

я используюspawn порождать длительно работающий процесс, который со временем отправляет вывод в stdio и читается и обрабатывается моим сценарием nodejs. Сложность в том, что я не могу гарантировать, что отправленная команда всегда будет действительной. Как я могу поймать ошибку в нересте? Предпочтительно это не будет включать установку глобального обработчика исключений, так как я не хочу обрабатывать какие-либо другие исключения. (Если это единственный способ, мне нужно выяснить, когда порожденный процесс запущен правильно, а затем удалить обработчик, а это беспорядок, в который я бы предпочел не попадать.)

Код, который я хочу запустить, будет выглядеть примерно так:

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

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

Но это просто вызывает исключение uncaughtException где-то в цикле событий узла, предположительно потому, что вызов асинхронный и даже не пытался запустить дочерний процесс во временном интервале моего скрипта.

Единственные исключения, которые необходимо перехватить, - это когда spawn вообще не запускает процесс (например, неверное имя и выбрасывается ENOENT). Я (в настоящее время) не обеспокоен какими-либо проблемами, которые может порождать сам процесс.

Похожие, но разные:Как мне отладить «Ошибка: вызов ENOENT» на node.js?

Я точно знаю, почему я получаю ENOENT, и я знаю, что нужно изменить, чтобы ошибка не произошла. У меня вопрос, как изящно отреагировать на эту ситуацию, если ошибка неизбежна.

Ответы на вопрос(3)

Ваш ответ на вопрос