Inhaltsverzeichnis
Nicht abgefangene Ausnahmen in Node.js
Inhaltsverzeichnis:
1. Probleme durch nicht abgefangene Ausnahmen
2. Wie gehe ich mit nicht abgefangenen Ausnahmen um?
3. Eine Anwendung ohne nicht erfasste Ausnahmen
4. Absturz Ihrer Anwendung
5. Stellen Sie sich vor, Sie sehen den Fehler nicht?
6. Die Anwendung stürzt ab, druckt das Protokoll und startet dann neu
Domains ist eine experimentelle Funktion, die in der
8. 结论
Heim Web-Frontend js-Tutorial So lösen Sie nicht abgefangene Ausnahmen in Node.js

So lösen Sie nicht abgefangene Ausnahmen in Node.js

Sep 27, 2017 am 10:00 AM
javascript 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);
});
Nach dem Login kopieren

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'
Nach dem Login kopieren

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(&#39;uncaughtException&#39;, function (err) {<br/>  console.log(err);<br/>})<br/></p>
Nach dem Login kopieren

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/oi/ocluster module7. Verwenden Sie das

-Modul [Anmerkung des Übersetzers: Jetzt veraltet]
var cluster = require(&#39;cluster&#39;);var workers = process.env.WORKERS || require(&#39;os&#39;).cpus().length;if (cluster.isMaster) {
  console.log(&#39;start cluster with %s workers&#39;, workers);  for (var i = 0; i < workers; ++i) {    var worker = cluster.fork().process;
    console.log(&#39;worker %s started.&#39;, worker.pid);
  }
  cluster.on(&#39;exit&#39;, function(worker) {
    console.log(&#39;worker %s died. restart...&#39;, worker.process.pid);
    cluster.fork();
  });
} else {  var http = require(&#39;http&#39;);
  http.createServer(function (req, res) {
    res.end("Look Mum! I&#39;m a server!\n");
  }).listen(3000, "127.0.0.1");
}
process.on(&#39;uncaughtException&#39;, function (err) {
  console.error((new Date).toUTCString() + &#39; uncaughtException:&#39;, err.message)
  console.error(err.stack)
  process.exit(1)
})
Nach dem Login kopieren

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(&#39;domain&#39;);var d = domain.create();var fs = require(&#39;fs&#39;);
d.on(&#39;error&#39;, function(err) {
  console.error(err);
});
d.run(function() {
  fs.readFile(&#39;somefile.txt&#39;, function (err, data) {
    if (err) throw err;
    console.log(data);
  });
});
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So richten Sie die Tastatur-Boot-Funktion auf einem GIGABYTE-Motherboard ein (aktivieren Sie den Tastatur-Boot-Modus auf dem GIGABYTE-Motherboard) So richten Sie die Tastatur-Boot-Funktion auf einem GIGABYTE-Motherboard ein (aktivieren Sie den Tastatur-Boot-Modus auf dem GIGABYTE-Motherboard) Dec 31, 2023 pm 05:15 PM

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 ein Online-Spracherkennungssystem mit WebSocket und JavaScript So implementieren Sie ein Online-Spracherkennungssystem mit WebSocket und JavaScript Dec 17, 2023 pm 02:54 PM

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 Implementierung von Echtzeitüberwachungssystemen WebSocket und JavaScript: Schlüsseltechnologien zur Implementierung von Echtzeitüberwachungssystemen Dec 17, 2023 pm 05:30 PM

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

Wie aktiviere ich den direkten Anschluss einer unabhängigen Grafikkarte am Shenzhou Xuanlong m7e8s3? Wie aktiviere ich den direkten Anschluss einer unabhängigen Grafikkarte am Shenzhou Xuanlong m7e8s3? Jan 04, 2024 am 09:24 AM

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 JavaScript und WebSocket: Aufbau eines effizienten Echtzeit-Wettervorhersagesystems Dec 17, 2023 pm 05:13 PM

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

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

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

So erkennen Sie echte und gefälschte Schuhkartons mit Nike-Schuhen (beherrschen Sie einen Trick, um sie leicht zu identifizieren) So erkennen Sie echte und gefälschte Schuhkartons mit Nike-Schuhen (beherrschen Sie einen Trick, um sie leicht zu identifizieren) Sep 02, 2024 pm 04:11 PM

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

Wie hoch ist die Auflösung des Savior y7000p bei der CF-Wiedergabe (So passen Sie den Vollbildmodus an, wenn Sie CF auf dem Savior Y7000 abspielen) Wie hoch ist die Auflösung des Savior y7000p bei der CF-Wiedergabe (So passen Sie den Vollbildmodus an, wenn Sie CF auf dem Savior Y7000 abspielen) Jan 07, 2024 am 10:13 AM

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

See all articles