Heim  >  Artikel  >  Web-Frontend  >  Best Practices für die NodeJS-Fehlerbehandlung

Best Practices für die NodeJS-Fehlerbehandlung

PHPz
PHPzOriginal
2023-05-12 10:35:06702Durchsuche

NodeJS ist eine serverseitige Open-Source-JavaScript-Laufzeitumgebung, die auf ereignisgesteuerter, asynchroner E/A basiert. Seine Effizienz und Skalierbarkeit machen NodeJS zur Technologie der Wahl für viele Webanwendungen auf Unternehmensebene. Allerdings sind NodeJS-Anwendungen wie jede andere Software nicht völlig immun gegen Fehler und Ausnahmen. Um die Robustheit und Zuverlässigkeit Ihres Codes zu verbessern, ist es sehr wichtig, Fehler richtig zu behandeln.

Dieser Artikel soll einige Best Practices für die NodeJS-Fehlerbehandlung bereitstellen, um Entwicklern dabei zu helfen, die Art und Weise, wie sie mit Fehlern umgehen, grundlegend zu verbessern.

1. Verwenden Sie das Error-Objekt

JavaScript stellt integrierte Error-Objekte bereit, die Standardmethoden zur Darstellung von Laufzeitfehlern sind. In NodeJS können Entwickler ihre eigenen benutzerdefinierten Fehlerobjekte basierend auf dem Fehlerobjekt erstellen, um sie besser an die spezifischen Anforderungen der Anwendung anzupassen. Das Folgende ist ein einfaches Beispiel:

class DatabaseConnectionError extends Error {
  constructor(msg, userFriendlyMsg) {
    super(msg);
    this.userFriendlyMsg = userFriendlyMsg;
    this.name = this.constructor.name;
    Error.captureStackTrace(this, this.constructor);
  }
}

In diesem Beispiel erweitern wir das integrierte Error-Objekt von NodeJS, fügen ein userFriendlyMsg-Attribut hinzu, um benutzerfreundliche Fehlerinformationen bereitzustellen, und überladen den Konstruktor, um dies zu ermöglichen Informationen transparent bereitzustellen und dabei Fehler zu verursachen.

2. Behandeln Sie asynchrone Ausnahmen ordnungsgemäß

Da es sich bei NodeJS um asynchrone E/A handelt, unterscheidet sich seine Ausnahmebehandlungsmethode vom herkömmlichen synchronen Code. Daher erfordert die Behandlung von Ausnahmen in asynchronem Code die Einhaltung einiger unterschiedlicher Regeln. Es gibt zwei Möglichkeiten, asynchrone Ausnahmen elegant zu behandeln: Im Kern der Lösung gesteuert. Normalerweise nimmt die Rückruffunktion die Zwei-Parameter-Form von (Fehler, Daten) an, wobei der Fehlerparameter den Fehler darstellt, der während des asynchronen Vorgangs auftreten kann, und der Datenparameter das Ergebnis des asynchronen Vorgangs darstellt.

    Um Ausnahmen in Rückruffunktionen ordnungsgemäß zu behandeln, empfehlen wir die Verwendung des Fehler-zuerst-Rückrufmusters, d. h. die Übergabe des Fehlerobjekts im ersten Parameter der Rückruffunktion. Natürlich ist es in manchen Fällen möglich, eine Try-Catch-Anweisung zu verwenden, um Ausnahmen in einer Rückruffunktion abzufangen, aber das ist im Allgemeinen keine gute Vorgehensweise.
  1. Das Folgende ist ein einfaches Beispiel:
function readFile(filePath, callback) {
  fs.readFile(filePath, (err, data) => {
    if (err) {
      callback(new Error(`Failed to read file: ${filePath}`));
    } else {
      callback(null, data);
    }
  });
}

In diesem Beispiel überprüfen wir manuell den Fehler in der Callback-Funktion und übergeben das Fehlerobjekt als ersten Parameter an den Callback.

Promise-Ausnahmebehandlung

Promise ist eine elegantere Möglichkeit, asynchronen Code in modernem JavaScript zu behandeln. Mit Promise können Ausnahmen, die bei asynchronen Vorgängen auftreten können, natürlicher behandelt werden. Das Folgende ist ein einfaches Beispiel:

function readFilePromise(filePath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, (err, data) => {
      if (err) {
        reject(new Error(`Failed to read file: ${filePath}`));
      } else {
        resolve(data);
      }
    });
  });
}
    In diesem Beispiel verwenden wir das Promise-Objekt, um den Vorgang des asynchronen Lesens der Datei abzuwickeln, und verwenden die Reject-Methode, um den Status des Promise auf „abgelehnt“ zu setzen ". Beachten Sie, dass jeder Link in der Promise-Ausnahmebehandlungskette die Catch-Methode aufrufen oder die Promise.allSettled()-Methode verwenden muss, um sicherzustellen, dass keine Ausnahmen ignoriert werden.
  1. 3. Gute Protokollaufzeichnungen schreiben

Wenn ein Fehler auftritt, ist die Protokollierung eine wichtige Aufgabe. Protokolle können uns helfen, Probleme schnell zu lokalisieren, die Ursache von Fehlern zu finden und geeignete Lösungen zu finden.

In NodeJS kann die Protokollierung das integrierte Konsolenobjekt verwenden, oder Sie können Protokollierungsbibliotheken von Drittanbietern wie winston.js, bunyan usw. verwenden.

Wenn Sie mehrere NodeJS-Instanzen haben oder auf mehreren Servern laufen, sollten Sie Fehler in einem zentralen Protokollierungssystem wie Elasticsearch, Graylog, Logstash usw. protokollieren.

4. Verwenden Sie geeignete Debugging-Tools

Große Serveranwendungen wie NodeJS können sehr komplex werden und das Debuggen bei auftretenden Fehlern kann schwierig werden. Um NodeJS-Anwendungen einfacher zu debuggen, können wir einige geeignete Debugging-Tools verwenden. Im Folgenden sind einige häufig verwendete Debugging-Tools aufgeführt:

Node.js integrierter Debugger

Der integrierte Debugger von NodeJS ist ein integrierter Debugger im NodeJS-Prozess Die laufende REPL-Umgebung. Es hilft uns beim interaktiven Debuggen zur Laufzeit, beim Überprüfen von Variablen, beim Ausführen von Ausdrücken, beim schrittweisen Durchlaufen von Code und mehr.

    Um den integrierten Debugger von NodeJS zu aktivieren, verwenden Sie die folgende Befehlszeile:
  1. node debug [app.js]
Chrome Developer Tools

#🎜🎜 # Chrome Developer Tools ist eines der am häufigsten verwendeten Debugging-Tools für Webentwickler und kann auch zum Debuggen von NodeJS-Anwendungen verwendet werden. Um Chrome Developer Tools zum Debuggen einer NodeJS-Anwendung zu verwenden, verwenden Sie die folgende Befehlszeile:

node --inspect[=[host:port]] [app.js]

Wir können dann den Chrome-Browser öffnen und die folgende URL besuchen:
    chrome://inspect
  1. Im Wählen Sie die Option „Remote-Ziel“, suchen Sie unsere NodeJS-Anwendung und klicken Sie auf die Schaltfläche „Inspizieren“, um die Entwicklertools zu öffnen.
Zusammenfassung

In diesem Artikel werden einige Best Practices für die NodeJS-Fehlerbehandlung vorgestellt, die Entwicklern dabei helfen können, in Webanwendungen auftretende Fehler besser zu verwalten und zu beheben. Durch die Verwendung von Fehlerobjekten, die ordnungsgemäße Behandlung asynchroner Ausnahmen, das Schreiben einer guten Protokollierung und die Verwendung geeigneter Debugging-Tools können wir Probleme schnell lokalisieren und lösen und so die Zuverlässigkeit und Robustheit unserer Anwendungen verbessern.

Das obige ist der detaillierte Inhalt vonBest Practices für die NodeJS-Fehlerbehandlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn