So lösen Sie nicht abgefangene Ausnahmen in Node.js
Nicht abgefangene Ausnahmen in Node.js
Der Umgang mit nicht abgefangenen Ausnahmen in Node.js ist nicht einfach
Inhaltsverzeichnis:
Probleme, die durch nicht erfasste Ausnahmen verursacht werden
So gehen Sie mit nicht erfassten Ausnahmen um
Eine Anwendung mit Keine nicht erfassten Ausnahmen
Ihre Anwendung abstürzen lassen
Stellen Sie sich vor, Sie sehen den Fehler nicht?
App stürzt ab, Protokoll drucken, dann neu starten
Domains-Modul verwenden [Anmerkung des Übersetzers: Jetzt veraltet]
Fazit
1. Probleme durch nicht abgefangene Ausnahmen
Aufgrund der Single-Threaded-Natur von Node.js sind nicht abgefangene Ausnahmen ein Problem für die Anwendungsentwicklung Während des Prozesses beachtenswerte Punkte. Node.js folgt einem Rückrufmuster, das zuerst Fehler und dann Daten enthält. Dieses Beispiel sehen wir oft: Wenn die Callback-Funktion ein Fehlerobjekt zurückgibt, wird der Fehler sofort ausgegeben.
var fs = require('fs'); fs.readFile('somefile.txt', function (err, data) { if (err) throw err; console.log(data); });
Wenn Sie dieses Programm ausführen und davon ausgehen, dass Sie die Datei somefile.txt
nicht haben, wird ein Fehler ausgegeben.
Error: ENOENT, open 'somefile.txt'
Dies führt zum Absturz des Prozesses und wirkt sich auf die gesamte APP aus.
Dies ist beabsichtigt. Node.js beabsichtigt nicht, Ihre Anwendung von Ihrem Dienst zu trennen.
2. Wie gehe ich mit nicht abgefangenen Ausnahmen um?
Wie gehe ich am besten mit nicht abgefangenen Ausnahmen um? Es gibt unzählige Möglichkeiten:
Ihre App sollte keine nicht erkannten Fehler haben, das ist verrückt.
Es ist auch verrückt, dass Sie Ihre App nach einem Absturz nicht erfasste Ausnahmen finden und diese dann beheben lassen sollten.
Die Augen vor einem Fehler zu verschließen und sich nicht damit auseinanderzusetzen – das ist es, was die meisten Menschen tun, und es ist scheiße.
Sie sollten Ihre Anwendung nach dem Absturz das Fehlerprotokoll ausdrucken lassen und dann den Vorgang mit etwas wie
upstart
,forever
,monit
neu starten. Diese Methode ist sehr praktisch.[Anmerkung des Übersetzers: Jetzt veraltet] Sie sollten beginnen, das Domains-Modul zur Fehlerbehandlung zu verwenden. Dies ist der einzige Weg, obwohl dies noch eine experimentelle Funktion von Node.js ist.
Lassen Sie uns nun diese Methoden im Detail erläutern.
3. Eine Anwendung ohne nicht erfasste Ausnahmen
Das Konzept einer „Anwendung ohne nicht erfasste Ausnahmen“ ist für mich seltsam, jede Anwendung wird irgendwann Ausnahmen haben und es kann sein, dass es sich um eine nicht erfasste Ausnahme handelt. Wenn Sie auf diesem Punkt beharren und den Benutzern Fehler vorwerfen, sollten Sie meiner Meinung nach darauf vorbereitet sein, mitten in der Nacht einen Anruf zu erhalten und zu erfahren, dass der Dienst abgestürzt ist.
4. Absturz Ihrer Anwendung
Die einzige Verteidigung, die ich in dieser Meinung finden kann, ist das Fail-Fast-Argument. Sie werden Ihre Anwendung schnell reparieren, wenn sie nicht verfügbar ist Wenn Sie Ihre Anwendung verweigern, bedeutet das, dass Sie sie akzeptieren. Aber Sie drängen Ihren Benutzern immer noch die Ausnahmebehandlung auf. (Verzeihen Sie mir, dass ich nicht herausfinden kann, wie ich diesen Absatz übersetzen soll. Wenn Sie gute Ideen haben, kontaktieren Sie mich bitte so schnell wie möglich! )
5. Stellen Sie sich vor, Sie sehen den Fehler nicht?
Viele Leute machen das:
<p style="margin-bottom: 7px;">process.on('uncaughtException', function (err) {<br/> console.log(err);<br/>})<br/></p>
Das ist schlecht. Wenn eine nicht abgefangene Ausnahme ausgelöst wird, sollten Sie sich darüber im Klaren sein, dass sich Ihre Anwendung in einem abnormalen Zustand befindet zuverlässig.
Der Felix Geisendörfer
, der die Veranstaltung „process.on“ ursprünglich vorgeschlagen hat, schlägt nun vor, sie zu entfernen.
6. Die Anwendung stürzt ab, druckt das Protokoll und startet dann neu
Mit dieser Methode können Sie Ihre Anwendung sofort abstürzen lassen, wenn eine nicht erfasste Ausnahme auftritt, und dann forever
oder <🎜 verwenden > so Das Tool startet (fast) sofort neu. Node.js schreibt die Ausnahme in upstart
, sodass Sie die Ausnahme in eine Protokolldatei umleiten und den Fehler später daraus abrufen können. Der Nachteil dieses Ansatzes besteht darin, dass er keine elegante Möglichkeit bietet, vorübergehende Stromausfälle oder Netzwerkfehlerszenarien zu bewältigen, bei denen der Fehler außerhalb Ihres Codes auftritt. Was für ein Werkzeug! — Starten Sie die App neu und versuchen Sie es erneut. Wenn Sie diese Strategie mit STERR
kombinieren, kann der Knoten alle untergeordneten Knoten, die einen Fehler auslösen, automatisch neu starten und den Fehler ausdrucken. i/o
i/o
cluster module
7. Verwenden Sie das
var cluster = require('cluster');var workers = process.env.WORKERS || require('os').cpus().length;if (cluster.isMaster) { console.log('start cluster with %s workers', workers); for (var i = 0; i < workers; ++i) { var worker = cluster.fork().process; console.log('worker %s started.', worker.pid); } cluster.on('exit', function(worker) { console.log('worker %s died. restart...', worker.process.pid); cluster.fork(); }); } else { var http = require('http'); http.createServer(function (req, res) { res.end("Look Mum! I'm a server!\n"); }).listen(3000, "127.0.0.1"); } process.on('uncaughtException', function (err) { console.error((new Date).toUTCString() + ' uncaughtException:', err.message) console.error(err.stack) process.exit(1) })
Domains
ist eine experimentelle Funktion, die in der
-Version hinzugefügt wurde, wodurch die Ausnahmebehandlung erleichtert wird flexibler und präziser. Das Folgende ist ein Beispiel, bei dem die Datei nicht vorhanden ist. Durch die Verwendung von können Sie ein Fehlerereignis für eine bestimmte Domäne auslösen. Sie können auch unterschiedliche Ausnahmebehandlungen für verschiedene Szenarien verwenden. Dadurch können Sie Ausnahmen je nach Ort ihres Auftretens entsprechend behandeln. Wenn das Verlassen eines Prozesses wie das Knacken einer Nuss mit einem Hammer ist, ist dies wie ein präzises Skalpell, das Ihnen die vollständige Kontrolle über das Programm gibt. Domains
var domain = require('domain');var d = domain.create();var fs = require('fs'); d.on('error', function(err) { console.error(err); }); d.run(function() { fs.readFile('somefile.txt', function (err, data) { if (err) throw err; console.log(data); }); });
8. 结论
如果你在产品环境运行 Node.js 你起码应该对如何处理异常有一个想法。目前为止我相信当异常被抛出时,大多数人只是重启应用(也许是优雅地重启),Domains
为应用提供了一种更聪明的面对异常的能力,异常处理器可能会选择简单的清理、关闭某些连接,最坏的情况下,退出进程。关键点就在于你有了选择。
我抛下榔头拾起手术刀的时候应该已经到了
Das obige ist der detaillierte Inhalt vonSo lösen Sie nicht abgefangene Ausnahmen in Node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So richten Sie den Tastaturstart auf dem Motherboard von Gigabyte ein. Wenn es den Tastaturstart unterstützen muss, muss es sich um eine PS2-Tastatur handeln! ! Die Einstellungsschritte sind wie folgt: Schritt 1: Drücken Sie Entf oder F2, um das BIOS nach dem Booten aufzurufen, und rufen Sie den Advanced-Modus (Normal) des BIOS auf. Standardmäßig wechseln Sie in den EZ-Modus (Easy) des Motherboards Drücken Sie F7, um in den erweiterten Modus zu wechseln. Motherboards der ROG-Serie rufen standardmäßig den erweiterten Modus auf (zur Demonstration verwenden wir vereinfachtes Chinesisch). Schritt 2: Wählen Sie „Erweitert“ – „Erweiterte Energieverwaltung (APM)“. Suchen Sie die Option [Aufwecken durch PS2-Tastatur] Schritt 4: Diese Option ist standardmäßig deaktiviert. Nach dem Herunterziehen sehen Sie drei verschiedene Einstellungsoptionen: Drücken Sie die [Leertaste], um den Computer einzuschalten, und drücken Sie die Gruppe

So implementieren Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem. Einführung: Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Spracherkennungstechnologie zu einem wichtigen Bestandteil des Bereichs der künstlichen Intelligenz geworden. Das auf WebSocket und JavaScript basierende Online-Spracherkennungssystem zeichnet sich durch geringe Latenz, Echtzeit und plattformübergreifende Eigenschaften aus und hat sich zu einer weit verbreiteten Lösung entwickelt. In diesem Artikel wird erläutert, wie Sie mit WebSocket und JavaScript ein Online-Spracherkennungssystem implementieren.

WebSocket und JavaScript: Schlüsseltechnologien zur Realisierung von Echtzeit-Überwachungssystemen Einführung: Mit der rasanten Entwicklung der Internet-Technologie wurden Echtzeit-Überwachungssysteme in verschiedenen Bereichen weit verbreitet eingesetzt. Eine der Schlüsseltechnologien zur Erzielung einer Echtzeitüberwachung ist die Kombination von WebSocket und JavaScript. In diesem Artikel wird die Anwendung von WebSocket und JavaScript in Echtzeitüberwachungssystemen vorgestellt, Codebeispiele gegeben und deren Implementierungsprinzipien ausführlich erläutert. 1. WebSocket-Technologie

So aktivieren Sie die direkte Verbindung der unabhängigen Grafikkarte des Shenzhou Habe den Treiber der unabhängigen Grafikkarte installiert. Sie können die offizielle Shenzhou-Website oder die offizielle Website des unabhängigen Grafikkartenherstellers besuchen, um den neuesten Treiber herunterzuladen und zu installieren, der für Ihr Grafikkartenmodell geeignet ist. 2. Klicken Sie auf dem Desktop des Computers mit der rechten Maustaste auf eine leere Stelle und wählen Sie im Popup-Menü „NVIDIA-Systemsteuerung“ (wenn es sich um eine AMD-Grafikkarte handelt, wählen Sie „AMDRadeon-Einstellungen“). 3. Suchen Sie in der Systemsteuerung nach „3D-Einstellungen“ oder einer ähnlich benannten Option und klicken Sie zum Aufrufen. 4. Unter „3D-Einstellungen“ müssen Sie „Globale Einstellungen“ oder eine ähnlich benannte Option finden. Hier können Sie die Verwendung eines Unikats festlegen

JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Einführung: Heutzutage ist die Genauigkeit von Wettervorhersagen für das tägliche Leben und die Entscheidungsfindung von großer Bedeutung. Mit der Weiterentwicklung der Technologie können wir genauere und zuverlässigere Wettervorhersagen liefern, indem wir Wetterdaten in Echtzeit erhalten. In diesem Artikel erfahren Sie, wie Sie mit JavaScript und WebSocket-Technologie ein effizientes Echtzeit-Wettervorhersagesystem aufbauen. In diesem Artikel wird der Implementierungsprozess anhand spezifischer Codebeispiele demonstriert. Wir

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Als weltbekannte Sportmarke haben die Schuhe von Nike viel Aufmerksamkeit erregt. Allerdings gibt es auch eine Vielzahl gefälschter Produkte auf dem Markt, darunter auch gefälschte Nike-Schuhkartons. Die Unterscheidung echter Schuhkartons von gefälschten ist für den Schutz der Rechte und Interessen der Verbraucher von entscheidender Bedeutung. In diesem Artikel erfahren Sie einige einfache und effektive Methoden, mit denen Sie zwischen echten und gefälschten Schuhkartons unterscheiden können. 1: Titel der Außenverpackung Wenn Sie sich die Außenverpackung von Nike-Schuhkartons ansehen, können Sie viele subtile Unterschiede feststellen. Originale Nike-Schuhkartons bestehen in der Regel aus hochwertigen Papiermaterialien, die sich glatt anfühlen und keinen offensichtlichen stechenden Geruch verströmen. Die Schriftarten und Logos auf authentischen Schuhkartons sind in der Regel klar und detailliert und es gibt keine Unschärfen oder Farbinkonsistenzen. 2: Der Logo-Heißprägetitel ist normalerweise auf dem Original-Schuhkarton abgebildet

Welche Auflösung hat der Savior Y7000P bei der CF-Wiedergabe? Die Auflösung des Savior Y7000P bei der CF-Wiedergabe beträgt 1920*1080. Da dieser Computer mit einer GTX1650-Grafikkarte und einem i5-9300H-Prozessor ausgestattet ist, ist seine Leistung relativ gut und ausreichend, um die Anforderungen von Spielen wie CF zu erfüllen. Gleichzeitig ist 1920*1080 die aktuelle Auflösung gängiger E-Sport-Monitore und die Bildqualität und Klarheit sind ausreichend. Darüber hinaus können Sie bei Spielern mit höheren Anforderungen die Bildqualitätseinstellungen des Spiels entsprechend verringern, um ein flüssigeres Spielerlebnis zu erzielen. Um ein klareres visuelles Erlebnis zu genießen, können Sie die Auflösung des Savior y7000p auf 2560*1400 einstellen. Auf diese Weise können Sie eine Bilddarstellung in höherer Qualität genießen. Ausgestattet mit dem Modell Saviour Y7000P 2022
