Heim > Artikel > Web-Frontend > JS-Try-Catch-Anweisung und Verwendung des Fehlertyps
Dieses Mal werde ich Ihnen die Verwendung von Try-Catch-Anweisungen und Fehlertypen in JS vorstellen. Was sind die Vorsichtsmaßnahmen für die Verwendung von Try-Catch-Anweisungen und Fehlertypen in JS? Das Folgende ist ein praktischer Fall, schauen wir uns das an.
Anwendungslogik kennt immer den Grund für den Aufruf einer bestimmten Funktion und ist daher am besten für die Fehlerbehandlung geeignet. Lassen Sie den Catch-Block in einem Try-Catch niemals leer. Sie sollten immer etwas schreiben, um Fehler zu behandeln. Tun Sie zum Beispiel nicht so etwas:
try { somethingThatMightCauseAnError(); } catch (ex) { // do nothing}
Wenn Sie wissen, dass ein Fehler wahrscheinlich auftritt, wissen Sie auf jeden Fall, wie Sie ihn beheben können. Die genaue Behebung von Fehlern unterscheidet sich im Entwicklungsmodus von der tatsächlichen Umsetzung in die Produktion, und das ist in Ordnung. Das Wichtigste ist, dass Sie den Fehler tatsächlich beheben, anstatt ihn zu ignorieren.
Die ECMA-262-Spezifikation weist auf 7 Fehlertypen hin. Diese Typen werden in der JS-Engine verwendet, wenn unterschiedliche Fehlerbedingungen auftreten, und natürlich können wir sie auch manuell erstellen.
Fehler: Der Grundtyp aller Fehler. Tatsächlich gibt die Engine diese Art von Fehler nie aus.
EvalError: Wird ausgelöst, wenn beim Ausführen von Code über die Funktion eval() ein Fehler auftritt.
RangeError: Wird ausgelöst, wenn eine Zahl ihre Grenzen überschreitet – zum Beispiel beim Versuch, ein Array mit der Länge -20 zu erstellen (neues Array(-20);). Dieser Fehler tritt bei der normalen Codeausführung sehr selten auf.
ReferenceError: Wird ausgelöst, wenn das gewünschte Objekt nicht existiert – zum Beispiel beim Versuch, eine Funktion für eine Null-Objektreferenz aufzurufen.
SyntaxError: Wird ausgelöst, wenn der Code einen Syntaxfehler aufweist.
TypeError: Wird ausgelöst, wenn die Variable nicht den erwarteten Typ hat. Zum Beispiel „new 10“ oder „prop“ in „true“.
URIError: Wird ausgelöst, wenn eine illegal formatierte URI-Zeichenfolge an Funktionen wie encodeURI(), encodeURIComponent(), decodeURI() oder decodeURIComponent() übergeben wird.
Das Verständnis der verschiedenen Arten von Fehlern kann uns helfen, leichter damit umzugehen. Alle Fehlertypen erben von Error, sodass die Überprüfung ihres Typs mit der Instanz von Error keine nützlichen Informationen liefert. Durch die Prüfung auf bestimmte Fehlertypen können Fehler zuverlässiger behandelt werden.
try { // 有些代码引发了错误} catch (ex) { if (ex instanceof TypeError) { // 处理TypeError错误 } else if (ex instanceof ReferenceError) { // 处理ReferenceError错误 } else { // 其他处理 } }
Wenn Sie Ihren eigenen Fehler auslösen und es sich eher um einen Datentyp als um einen Fehler handelt, können Sie Ihren Fehler leicht vom Fehlertyp des Browsers unterscheiden. Das Werfen von Fehlern tatsächlicher Art hat jedoch mehrere Vorteile gegenüber dem Werfen von Objekten anderer Art.
Zunächst werden, wie oben erläutert, Fehlermeldungen im Rahmen des normalen Fehlerbehandlungsmechanismus des Browsers angezeigt. Zweitens fügt der Browser dem ausgelösten Error-Objekt einige zusätzliche Informationen hinzu. Diese Informationen variieren von Browser zu Browser, liefern aber Kontextinformationen zum Fehler, wie z. B. Zeilen- und Spaltennummern, und in einigen Browsern auch Stack- und Quellcodeinformationen. Wenn Sie den Error-Konstruktor verwenden, verlieren Sie natürlich die Fähigkeit, von Ihnen selbst ausgelöste Fehler von Browserfehlern zu unterscheiden.
Die Lösung besteht darin, einen eigenen Fehlertyp zu erstellen und ihn von Fehler erben zu lassen. Mit diesem Ansatz können Sie zusätzliche Informationen bereitstellen, die sich von dem vom Browser ausgegebenen Fehler unterscheiden. Benutzerdefinierte Fehlertypen können mit dem folgenden Muster erstellt werden.
function MyError (message) { this.message = message; } MyError.prototype = new Error();
Dieser Code besteht aus zwei wichtigen Teilen: dem Nachrichtenattribut, der Fehlermeldungszeichenfolge, die der Browser kennen muss, indem er den Prototyp auf eine Fehlerinstanz setzt, damit er für die JS-Engine als falsches Ziel identifiziert wird . Als Nächstes können Sie ein Instanzobjekt von MyError auslösen, damit der Browser wie ein nativer Fehler reagieren kann.
throw new MyError('Hello World!');
Zur Erinnerung: Diese Methode zeigt in IE8 und früheren Browsern keine Fehlermeldungen an. Stattdessen wird die allgemeine Meldung „Ausnahme ausgelöst, aber nicht abgefangen“ angezeigt. Der größte Vorteil dieser Methode besteht darin, dass benutzerdefinierte Fehlertypen ihre eigenen Fehler erkennen können.
try { // 有些代码引发了错误} catch (ex) { if (ex instanceof MyError) { // 处理自己的错误 } else { // 其他处理 } }
IEs kleine Dummheit wäre egal, wenn du alle Fehler, die du gemacht hast, immer selbst erkennen würdest. Die Vorteile eines ordnungsgemäßen Fehlerbehandlungssystems sind enorm. Diese Methode kann immer flexiblere Informationen liefern, um Entwickler darüber zu informieren, wie Fehler richtig behandelt werden.
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
So vermeiden Sie Nullvergleiche in der Webentwicklung
Warum Sie die Verwendung globaler Variablen vermeiden müssen Webentwicklung
Das obige ist der detaillierte Inhalt vonJS-Try-Catch-Anweisung und Verwendung des Fehlertyps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!