Heim  >  Artikel  >  Web-Frontend  >  Beispielanalyse von Try Catch Finally in der JavaScript-Ausnahmebehandlung

Beispielanalyse von Try Catch Finally in der JavaScript-Ausnahmebehandlung

黄舟
黄舟Original
2017-10-26 09:41:091626Durchsuche

Syntaxstruktur

Try Catch ist der ECMAScript-262-Standard der dritten Ausgabe, der einen Ausnahmebehandlungsmechanismus bereitstellt. Die Syntaxstruktur ist wie folgt:


1 try{
2 //可能会发生的错误代码
3 }
4 catch(error){
5 //错误处理
6 }finally{
7  //无论是否有异常都会执行
8 }

Die Syntax ist die gleiche wie bei den meisten Sprachen wie java.net. Wenn der Codeblock try{} eine Ausnahme abfängt, erhält der Catch-Block ein Fehlermeldungsobjekt (eine Instanz von Error).

Wir sollten den Code, der Fehler verursachen kann, in den Try-Block einfügen, und die Fehlerbehandlung befindet sich im Catch-Block in js, wenn im 3f1c4e4b6b16bbbd69b2ee476dc4f83a2cacc6d41bbb37262a98f745aa00fbf0-Codeblock ein Fehler auftritt und es gibt keine Ausnahme. Wenn die Catch-Ausnahme behandelt wird, wird der nachfolgende Code des aktuellen 3f1c4e4b6b16bbbd69b2ee476dc4f83a-Codeblocks nicht ausgeführt, hat jedoch keine Auswirkungen auf andere 3f1c4e4b6b16bbbd69b2ee476dc4f83a2cacc6d41bbb37262a98f745aa00fbf0 🎜>


 1 <script> 
 2   function run(){ 
 3       console.log(age); 
 4   } 
 5     run(); 
 6     console.log(&#39;可以输出吗?&#39;);//没有执行 
 7 </script> 
 8  
 9 <script>
 10     console.log(&#39;这是第二个代码块&#39;);//执行了,这是第二个代码块
 11 </script>
Im Gegenteil, nachfolgender Code wird weiterhin ausgeführt, wie zum Beispiel:


 1 <script> 
 2   function run(){ 
 3       try{ 
 4           console.log(age); 
 5       }catch(error){ 
 6  
 7       } 
 8  
 9   }
 10     run();
 11     console.log(&#39;可以输出吗?&#39;);//可以输出吗?
 12 </script>
 13 
 14 <script>
 15     console.log(&#39;这是第二个代码块&#39;);//这是第二个代码块
 16 </script>
endlich Anweisung

Wenn es einen „finally“-Codeblock gibt, wird der darin enthaltene Code unabhängig vom Grund ausgeführt, auch wenn die Catch-Anweisung eine Return-Anweisung enthält, der folgende Code:


    function say() {        try {
            console.log(age)            return;
        } catch (erroe) {
            console.log(erroe.message);//age is not defined
            return;
        } finally {
           console.log(&#39;finally 执行了&#39;);//finally 执行了        }
    }
    say();
Verstehen Sie den Fehlertyp

wenn während der Ausführung des Codes ein Fehler auftritt, wird ein Fehlerobjekt erstellt und ausgegeben. Dieses Objekt enthält Fehlerbeschreibungsinformationen.

Zum Beispiel ist in der Anweisung

try...catch(error){...} Error ein vom Typ Error ausgelöstes Objekt. Das Objekt verfügt über drei grundlegende Attribute: Name , Fehlername, Meldung Fehlerinformationen, Stapelfehler Stapelinformationen; Es können mehrere Arten von Fehlern auftreten, die während des Ausführungszeitraums auftreten können. Daher wurden mehrere Fehler ausgelöst, z. B.:

Fehler Fehler vom Typ Fehler Sehen Sie, wenn es welche gibt, werden sie vom Browser ausgelöst. Der Hauptzweck dieses Basistyps besteht darin, dass Entwickler benutzerdefinierte Fehler auslösen können.

Evalerror erstellt eine ERROR-Instanz, um den Grund für den Fehler anzugeben: Sie hängt mit Eval() zusammen.

InternalError                                                                                                                                                                        , um eine Instanz einer ausgelösten Ausnahme zu erstellen, die einen internen Fehler in der Javascript-Engine darstellt. Zum Beispiel: „Zu viel Rekursion“.

RangeError                                                                                                                                                           
ReferenceError                                                                                                                                                                                                                   um auf die Fehlerursache zu verweisen – werden durch Erstellen einer Fehlerinstanz erstellt.
Syntaxerror erstellt eine Fehlerinstanz, um den Grund für den Fehler anzugeben: evac () Der Syntaxfehler ist beim Parsen des Codes aufgetreten.
Typerror erstellt eine ERROR-Instanz, die die Fehlerursache angibt: Variablen oder Parameter sind keine effektiven Typen.
URIError                              Erstellen Sie eine Fehlerinstanz, um die Ursache anzugeben Fehler: Die an encodeURI() oder decodeURl() übergebenen Parameter sind ungültig.

Error ist die Basisklasse. Andere Fehlertypen werden vom Fehlertyp geerbt, daher verfügt die Unterklasse auch über drei grundlegende Attribute: Name, Fehlermeldung und Stapel.

Mit diesen Fehlertypen können wir Code wie diesen schreiben, um einen bestimmten Ausnahmetyp gezielt zu behandeln, indem wir den Ausnahmetyp beurteilen, wie zum Beispiel:


 1 <script> 
 2     function run() { 
 3         try { 
 4             say("hello word"); 
 5         } 
 6         catch (error) { 
 7             for (var p in error) { 
 8                 document.writeln(error[p]); 
 9             }
 10             //上面可以遍历错误
 11             if (error instanceof EvalError) {
 12                 //如果非法调用了eval()函数,则会抛出EvalError的异常。
 13                 alert("EvalError");
 14             } else if (error instanceof ReferenceError) {
 15                 //错误的引用,此例子是执行到了本步。
 16                 alert("ReferenceError");
 17             } else if (error instanceof RangeError) {
 18                 //数值超出了范围
 19                 alert("RangeError");
 20             } else if (error instanceof SyntaxError) {
 21                 //语法错误,错误发生在eval(),
 22                 alert("SyntaxError");
 23             } else if (error instanceof TypeError) {
 24                 //变量类型不是预期的
 25                 alert("TypeError");
 26             } else if (error instanceof URIError) {
 27                 //错误发生在encodeURI()或decodeURI()中
 28                 alert("URIError");
 29             }
 30         }
 31     }
 32     run();
 33 </script>

throw löst einen benutzerdefinierten Fehlertyp aus

Syntax: throwException;

Exception kann jede Art von Daten sein, z :

wirf 12345;

wirf 'Hallo';

wirf wahr;

wirf {Name:'Joel',Alter:20};

Verwenden Sie die throw-Anweisung, um eine benutzerdefinierte Ausnahme auszulösen, z. B.:


Javascript-Ausnahmebehandlungsmechanismus

 1 <script> 
 2     function see(){ 
 3         try { 
 4             if(true){ 
 5                 throw new Error("my eroor!"); 
 6             } 
 7  
 8         } catch (error) { 
 9             console.log(error.name );//Error
 10             console.log(error.message);//my eroor!
 11             console.log(error.stack);//Error: my eroor! at see (try.html:12) at try.html:22
 12         }
 13     }
 14     see();
 15 </script>
Beim Ausführen von Javascript. Wenn ein Wenn im Code ein Fehler auftritt, sucht die JS-Engine Schritt für Schritt nach dem entsprechenden Catch-Handler gemäß dem JS-Aufrufstapel. Wenn der entsprechende Catch-Handler nicht gefunden wird oder ein Fehler vorliegt oder ein neuer Fehler ausgelöst wird, wird der Fehler schließlich angezeigt Die Verarbeitung wird an den Browser übergeben, der dem Benutzer die Fehlermeldung auf unterschiedliche Weise anzeigt (IE zeigt ein gelbes Dreiecksmuster in der unteren linken Ecke an, während Firefix es in der Fehlerkonsole anzeigt); >window.onerror

Jeder Fehler, der nicht von tyr-catch behandelt wird, löst das Fehlerereignis des Fensterobjekts aus, wie zum Beispiel:

Das window.onerror-Ereignis empfängt drei Parameter: msg error message, url die URL der Seite, auf der der Fehler aufgetreten ist, Zeile der Codezeile, auf der der Fehler aufgetreten ist.


Front-End-Code-Ausnahmeüberwachungslösung

 1 <script> 
 2     window.onerror= function (msg,url,l) 
 3     { 
 4         console.log(msg)//Uncaught ReferenceError: a is not defined 
 5         console.log(url)//http://localhost:63342/person_Project/js_demo/onerror.html 
 6         console.log(l)//17 
 7     } 
 8  
 9     function run(){
 10         console.log(a)
 11     }
 12     run()
 13 </script>
Da das Fehlerobjekt, das von Try Catch und window.onerror erfasst wird, Fehlerereignisse global überwacht, wird die Front-End-JS-Code-Fehlerüberwachung zu einfach.

Das obige ist der detaillierte Inhalt vonBeispielanalyse von Try Catch Finally in der JavaScript-Ausnahmebehandlung. 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