English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NodeJS Grund教程

NodeJS Express.js

NodeJS Puffer & URL;

NodeJS MySql

NodeJS MongoDB

NodeJS Datei (FS)

NodeJS andere

Node.js Try Catch

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?

Beispiel für Node.js, das Fehlerabfangen versucht

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

Warum sollte man Node.js Try Catch nicht verwenden, um Fehler in asynchronen Operationen zu fangen?

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

Wie verhält sich eine Ausnahme im asynchronen Code?

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.

Zusammenfassung:

In diesem Node.js-Tutorial – Node.js Try Catch中, wir haben die Verwendung von Try Catch und die Szenarien ohne Try Catch gelernt.