English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.js Try Catch ist ein Fehlerbehandlungsmechanismus. Wenn ein Abschnitt von Code als Fehler ausgelöst werden soll und mit try umgeben ist, können alle aufgetretenen Ausnahmen im catch-Block gelöst werden. Wenn ein Fehler nicht auf irgendeine Weise behandelt wird, wird das Programm plötzlich beendet, was nicht gut ist.
Hinweis: Es ist am besten,Node.js Try Catchnur für synchrone Operationen verwendet. Wir werden in diesem Tutorial auch erfahren, warumTry Catchfür asynchrone Operationen verwendet.
Beispiel für Node.js, das Fehlerabfangen versucht
Warum sollte man Node.js Try Catch nicht verwenden, um Fehler in asynchronen Operationen zu fangen?
Wie verhält sich eine Ausnahme im asynchronen Code?
In diesem Beispiel werden wirversuchenrund um den Codeabschnitt für das Synchronlesen von Dateien verwendetTry Catch。
#example für Node.js Try Catch var fs = require('fs'); try{ // Datei nicht gefunden var data = fs.readFileSync('sample.html'); } catch (err) { console.log(err); } console.log("Fortsetzung mit anderen Anweisungen...");
Wenn das obige Programm ausgeführt wird...
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-try-catch-example.js { Error: ENOENT: no such file or directory, open 'sample.html' at Object.fs.openSync (fs.js:652:18) at Object.fs.readFileSync (fs.js:553:33) at Object.<anonymous> (/nodejs/nodejs-try-catch-example.js:5:16) at Module._compile (module.js:573:30) at Object.Module._extensions..js (module.js:584:10) at Module.load (module.js:507:32) at tryModuleLoad (module.js:470:12) at Function.Module._load (module.js:462:3) at Function.Module.runMain (module.js:609:10) at startup (bootstrap_node.js:158:16) errno: -2, Code: 'ENOENT', Syscall: 'open', Pfad: 'sample.html' Fortsetzung mit anderen Anweisungen..
Beachten Sie, dass das Programm nicht plötzlich beendet wird, sondern die folgenden Anweisungen fortsetzt.
Nun werden wir sehen, was passiert, wenn wir den selben Vorgang nicht mit try catch verwenden.
# Fehler ohne Node.js Try Catch var fs = require('fs'); // Versuchen Sie, die Datei synchron zu lesen, anstatt sie zu präsentieren var data = fs.readFileSync('sample.html'); console.log("Fortsetzung mit anderen Anweisungen...");
Das Programm enthält keine Fehlerbehandlungsmechanismen und wird plötzlich beendet, und die folgenden Anweisungen werden nicht ausgeführt.
Wenn das obige Programm ausgeführt wird...
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs$ node nodejs-try-catch-example-1.js /home/arjun/nodejs/nodejs-try-catch-example-1.js:1 (function (exports, require, module, __filename, __dirname) { # Beispiel für Node.js Try Catch ^ SyntaxError: Ungültiges oder unerwartetes Token at createScript (vm.js:74:10) at Object.runInThisContext (vm.js:116:10) at Module._compile (module.js:537:28) at Object.Module._extensions..js (module.js:584:10) at Module.load (module.js:507:32) at tryModuleLoad (module.js:470:12) at Function.Module._load (module.js:462:3) at Function.Module.runMain (module.js:609:10) at startup (bootstrap_node.js:158:16) at bootstrap_node.js:598:3
Bedenken Sie das folgende Beispiel, in dem wir versuchen, eine asynchrone Dateilektüre mit Callback-Funktionen durchzuführen und Fehler auszulösen, falls Probleme auftreten. Dann umgeben wir den Task mit einem "Versuch, Fehler zu fangen"-Block, um hoffentlich den ausgelösten Fehler zu erfassen.
# Node.js Try Catch mit asynchroner Callback-Funktion var fs = require('fs'); try{ fs.readFile('sample.txta', // Callback-Funktion function(err, data) { if (err) throw err; }); } catch(err){ console.log("In Catch Block") console.log(err); } console.log("Next Statements")
Terminalausgabe
arjun@arjun-VPCEH26EN:~/nodejs/try-catch$ node nodejs-try-catch-example-2.js Next Statements /home/arjun/nodejs/try-catch/nodejs-try-catch-example-2.js:8 if (err) throw err; ^ Error: ENOENT: keine Datei oder Dateisystem, öffnen 'sample.txta'
Wenn Sie die Ausgabe beobachten, führen Sie bitteKonsolenausgabe.inif(err) werfen errbereits ausgeführtlog("Next Statements") , weil, das Lesen der Datei wird asynchron abgeschlossen und der Kontroller wartet nicht auf die Beendigung der Dateioperation, sondern führt den nächsten Befehl fort.Das bedeutet, dass der Kontroller nicht im Try Catch-Block ist.Wenn ein Fehler während einer asynchronen Operation auftritt, weiß der Kontroller nichts über einen Try Catch-Block.Daher können unsere Try Catch-Blöcke keine Fehler erfangen, die während asynchroner Operationen auftreten könnten, und Entwickler sollten die Verwendung vermeidenNode.js Try CatchBlöckeerfangenFehler, die durch asynchrone Aufgaben verursacht werden。
Wenn Sie sich fragen, was mit Ausnahmen in asynchronem Code passiert, ist das die Antwort. Wenn Sie die Callback-Funktion Callback durchlaufen haben und den Fehlerobjekt als Parameter beobachtet haben, dann geben Sie alle Fehler oder Ausnahmen hier an Node.js zurück.
In diesem Node.js-Tutorial – Node.js Try Catch中, wir haben die Verwendung von Try Catch und die Szenarien ohne Try Catch gelernt.