Wirf einen Fehler in Node.js aus

Shraddha Paghdar 12 Oktober 2023
Wirf einen Fehler in Node.js aus

Der heutige Beitrag wird uns beibringen, wie man einen Fehler in Node.js auslöst.

Wirf einen Fehler in Node.js aus

Fehler sind Anweisungen, die eine ordnungsgemäße Ausführung des Systems verhindern.

Fehler in Node.Js werden durch Exceptions behandelt, die mit Hilfe des Schlüsselworts throw erzeugt werden. Dies könnte Benutzern beim Erstellen benutzerdefinierter Ausnahmen helfen.

Sobald diese JavaScript-Codezeile ausgeführt wird, stoppt der normale Ablauf des Programms, und die Kontrolle wird vom nächstgelegenen Exception-Handler übernommen. Das Programm bricht ab, wenn zwischen den aufrufenden Funktionen kein catch-Block existiert.

Syntax:

throw expression;

Der Wert kann normalerweise ein beliebiger JavaScript-Wert im clientseitigen Code sein, einschließlich einer Zahl, eines Objekts oder einer Zeichenfolge. Aber in Node.js werfen wir keine Strings; Wir werfen nur Error-Objekte.

Das Fehlerobjekt

Ein Fehlerobjekt ist ein Objekt, das eine Instanz des Objekts Error ist oder die im Hauptmodul Error bereitgestellte Klasse Error erweitert. Fehlerobjekte werden generiert, wenn Laufzeitfehler auftreten.

Wir können das Fehlerobjekt auch als Basisobjekt für benutzerdefinierte Ausnahmen verwenden.

throw new Error('You reached the end!');
class MyCustomError extends Error {
  // ...
}
throw new MyCustomError();

Ausnahmen behandeln

Der Exception-Handler ist die try...catch-Anweisung. Alle Ausnahmen, die in den Codezeilen des try-Blocks ausgelöst werden, werden im entsprechenden catch-Block behandelt.

Wenn eine nicht abgefangene Ausnahme ausgelöst wird, während Ihr Programm ausgeführt wird, schlägt Ihr Programm fehl.

try {
  /* Your Regular Code */
} catch (e) {
  /* Catch your exception here */
}

e ist der Ausnahmewert in diesem Beispiel. Sie können mehrere Handler hinzufügen, die verschiedene Arten von Fehlern erkennen können.

Basierend auf der Art der Ausnahme können Sie dann Ihr Programm ändern. Um das Programmfehlerproblem zu beheben, warten Sie auf das Ereignis uncaughtException für das Prozessobjekt.

process.on('uncaughtException', err => {
  console.error('An uncaught error is caught here', err);
  process.exit(1);
});

Das Hauptmodul process brauchen Sie dafür nicht zu importieren, da es automatisch eingebunden wird.

Ausnahmen mit promises behandeln

Mit Promises können Sie einzigartige Vorgänge kollektiv verketten und Fehler am Ende behandeln. Versprechensketten sind großartig im Umgang mit Fehlern.

Wenn ein Promise abgelehnt wird, springt die Steuerung zum nächsten Ablehnungshandler. Das ist in der Praxis sehr praktisch.

Wie Sie vielleicht sehen, muss .catch nicht sofort sein. Es kann nach einem oder vielleicht mehreren .dann erscheinen.

fooFunction()
    .then(barFunction)
    .then(fooBarFunction)
    .catch(err => console.error(err));

Ausnahmen mit async/await behandeln

Mit async/await müssen Sie Fehler mit try...catch abfangen.

async function fooFunction() {
  try {
    await fooBarFunction();
  } catch (err) {
    console.error(err.message);
  }
}

Lassen Sie es uns mit dem folgenden einfachen Beispiel verstehen:

fooBarFunction =
    async () => {
  throw new Error('Hello DelftStack Users!')
}

async function fooFunction() {
  try {
    console.log('Before Error') await fooBarFunction();
  } catch (err) {
    console.error(err.message);
  }
} fooFunction()

Im obigen Beispiel rufen wir fooFunction() auf, was zuerst die Nachricht druckt und dann intern fooBarFunction() aufruft. In fooBarFunction() werfen wir einfach einen Fehler, der von fooFunction() abgefangen wird.

Versuchen Sie, das obige Code-Snippet in Replit auszuführen, das Node.js unterstützt. Es wird das folgende Ergebnis angezeigt:

Ausgang:

Before Error
Hello DelftStack Users!

Demo ausführen

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

Verwandter Artikel - Node.js Error