Ich arbeite hauptsächlich mit Nodejs (aber ich bin im Allgemeinen neu zu Javascript im Allgemeinen), aber genauer expressjs. Sie schlagen ausdrücklich vor, das Try-and-Catch-Muster zu verwenden, aber ich habe gesehen, dass andere vorschlagen, zuerst den versuchten und wahren Fehler zu machen.ist versuchen, Fangmuster besser als Fehler zuerst?
heißt
callback(err, data) {
if (err) throw err;
//do something if no error was returned
}
statt
callback(err, data) {
try {
//do something
} catch(err) {
//handle the error
}
}
Welches weit der bessere Weg, Dinge zu tun gilt? Javascript ist sehr zweideutig, wenn es darum geht, "den einzig wahren Weg" zu finden, etwas zu tun.
Ihr zweites Beispiel nicht wirklich Sinn machen. Zu dem Zeitpunkt, an dem "Callback" aufgerufen wird, ist der Fehler * bereits * passiert oder nicht eingetreten, und "err" ist der Fehler (falls es der Fall ist) oder "null" (falls nicht). Dies liegt an der asynchronen Natur der meisten Node-API-Aufrufe, daher gibt es diesen Standardvertrag für Rückrufe: Der erste Arg ist ein Fehler (falls vorhanden), der zweite ist Daten (falls vorhanden). (Wenn die API heute entworfen würde, würde sie Versprechungen verwenden, und tatsächlich gibt es Bridging-Bibliotheken.) –
Versuchen Sie zu fangen, kann nicht durch V8 optimieren! –
Sie fangen etwas, das geworfen wird; hier wird 'err' eingegeben: der Fehler ist schon passiert. –