Wie fängt ein ENOENT mit nodejs child_process.spawn?

Ich bin mit spawn zum laichen einen lang andauernden Prozess, der sendet die Ausgabe im Laufe der Zeit in stdio und wird bearbeitet und gelesen von meinem nodejs script. Der schwierige Teil ist, dass ich nicht garantieren kann, dass der gesendete Befehl wird immer gültig sein. Wie kann ich fangen einen Fehler in der Laichzeit? Vorzugsweise wird dies nicht mit der Installation eines globalen exception-handler, da ich nicht wollen, behandeln andere Ausnahmen. (Wenn das die einzige Möglichkeit, die ich brauchen würde, um herauszufinden, wenn der erzeugte Prozess hat begonnen, richtig und deinstallieren Sie dann die handler, die ist ein Chaos, ich würde lieber nicht in.)

Den code, den ich ausführen will, wäre so etwas wie dieses:

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

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

Aber das nur erhöht, eine uncaughtException irgendwo in der Knoten-Ereignis-Schleife, vermutlich, weil der Anruf ist async und hat nicht einmal versucht, zu starten, wird der Kind-Prozess auf mein Skript Zeitscheibe.

Die einzigen Ausnahmen, die müssen gefangen werden, wenn spawn nicht starten, der Prozess (zum Beispiel, der name ist falsch und ENOENT geworfen wird). Ich bin nicht (zu diesem Zeitpunkt) befasste sich mit allen Problemen der erzeugte Vorgang kann erzeugen auf Ihrem eigenen.


Ähnlich, aber anders: Wie kann ich debug "Fehler: spawn ENOENT" auf node.js?

Ich weiß genau, warum ich immer bin, ENOENT, und ich weiß, was ich ändern um den Fehler nicht passieren. Meine Frage ist, wie anmutig reagieren auf diese situation, wenn der Irrtum unvermeidbar ist.

InformationsquelleAutor Fizzbuzz97 | 2015-12-10
Schreibe einen Kommentar