JavaScript Error - Throw and Try to Catch
- Previous Page JS Operator Precedence
- Next Page JS Scope
try
De statement maakt het mogelijk om fouten in het codeblok te testen.
catch
De statement maakt het mogelijk om fouten te verwerken.
throw
Een statement dat u toestaat om aangepaste fouten te maken.
finally
Maakt het mogelijk om code uit te voeren, na try en catch, ongeacht het resultaat.
Fouten zullen altijd optreden!
Er kunnen verschillende fouten optreden bij het uitvoeren van JavaScript-code.
Fouten kunnen optreden door foutieve codering van de programmeur, foutieve invoer of andere onvoorziene problemen.
Example
In dit voorbeeld, we gebruiken adddlert
Schrijf een waarschuwingcode om opzettelijk een fout te veroorzaken:
<p id="demo"></p> <script> try { adddlert("Welkom op het bezoek!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
JavaScript vangt adddlert op als een fout en voert code uit om de fout te verwerken.
JavaScript try en catch
try
De statement maakt het mogelijk om een codeblok te definiëren om fouten te detecteren tijdens de uitvoering.
catch
De statement maakt het mogelijk om een codeblok te definiëren dat moet worden uitgevoerd, als er een fout optreedt in de try-codeblok.
JavaScript Statements try
en catch
Wordt paarsgewijs weergegeven:
try { Een codeblok voor testen } catch(err) { Een codeblok om fouten te verwerken }
JavaScript gooit een fout
Bij het optreden van een fout stopt JavaScript meestal en geeft een foutbericht weer.
De technische term wordt zo beschreven:JavaScript gooit een uitzondering (gooit een fout).
JavaScript maakt in feite een object met twee eigenschappen aan Object Error:naam
en bericht
.
throw-statement
throw
Een statement dat u toestaat om aangepaste fouten te maken.
Technisch gezien kunt uGooi een uitzondering (gooi een fout).
Een uitzondering kan een JavaScript-string, getal, boolean of object zijn:
throw "Te groot"; // gooi tekst throw 500; // gooi een getal
als throw
en try
en catch
Samen gebruikt, kunnen ze het programmaflow controleren en aangepaste foutmeldingen genereren.
Invoer verificatie voorbeeld
In dit voorbeeld wordt de invoer gecontroleerd. Als de waarde onjuist is, wordt een uitzondering (err) gegooid.
Deze uitzondering (err) wordt opgevangen door een catch-statement en een aangepaste foutmelding wordt weergegeven:
<!DOCTYPE html> <html> <body> <p>Voer een getal in tussen 5 en 10 in:</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">Test invoer</button> <p id="message"></p> <script> function myFunction() { var message, x; bericht = document.getElementById("bericht"); bericht.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "leeg"; if(isNaN(x)) throw "is geen getal"; x = Number(x); if(x < 5) throw "te klein"; if(x > 10) throw "te groot"; } catch(err) { message.innerHTML = "Invoer is " + err; } } </script> </body> </html>
HTML-verificatie
Het bovenstaande codevoorbeeld is slechts een voorbeeld.
Moderne browsers combineren vaak JavaScript met ingebouwde HTML-verificatie, door gebruik te maken van vooraf gedefinieerde verificatierules die zijn gedefinieerd in HTML-eigenschappen:
<input id="demo" type="number" min="5" max="10" step="1">
U zult later in dit handboek meer leren over formulierverificatie.
finally-statement
finally
Een statement dat u toestaat om code uit te voeren na try en catch, ongeacht het resultaat:
try { // Codeblok voor testdoeleinden } catch(err) { // Codeblok om fouten te verwerken } finally { // Elke codeblok die ongeacht het resultaat wordt uitgevoerd }
Example
function myFunction() { var message, x; bericht = document.getElementById("bericht"); bericht.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "is leeg"; if(isNaN(x)) throw "is geen getal"; x = Number(x); if(x > 10) throw "te groot"; if(x < 5) throw "te klein"; } catch(err) { bericht.innerHTML = "Fout: " + err + "."; } finally { document.getElementById("demo").value = ""; } }
Object Error
JavaScript heeft een ingebouwde object error dat foutinformatie biedt wanneer een fout optreedt.
het object error biedt twee nuttige eigenschappen:naam
en bericht
.
Eigenschappen van het object Error
Property | Beschrijving |
---|---|
naam | Instellen of teruggeven van de foutnaam |
bericht | Instellen of teruggeven van het foutbericht (een string) |
Waarden van foutnamen
De property name van het object error kan zes verschillende waarden teruggeven:
Foutnaam | Beschrijving |
---|---|
EvalError | Er is een fout opgetreden in de eval() functie |
RangeError | Er is een fout opgetreden buiten het getalbereik |
ReferenceError | Er is een ongeldige referentie opgetreden |
SyntaxError | Er is een syntaxisfout opgetreden |
TypeError | Er is een typefout opgetreden |
URIError | Fout die is opgetreden in encodeURI() |
Hieronder leggen we de zes verschillende waarden uit in detail.
Eval fout
EvalError
foutmelding van de eval() functie uit.
Nieuwere versies van JavaScript gooien geen enkele EvalError
Gebruik SyntaxError
Vervang.
Bereikfout
RangeError
zal worden gegooid wanneer u een getal gebruikt dat buiten het geldige bereik ligt.
Bijvoorbeeld: u kunt de aantal cijfers van een getal niet instellen op 500.
Example
var num = 1; try { num.toPrecision(500); // Een getal kan geen 500 geldige cijfers hebben } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Reftreffout
Als u een variabele gebruikt (reftreert) die nog niet is verklaard, dan ReferenceError
zal worden gegooid:
Example
var x; try { x = y + 1; // y kan niet worden gerefdereerd (gebruikt) } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Syntaxisfout
Als u code met syntaxisfouten berekent, dan SyntaxError
Thrown:
Example
try { eval("alert('Hello')"); // Het ontbreken van ' zal een fout veroorzaken } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Typefout
Als de waarde die u gebruikt buiten het verwachte bereik ligt, dan TypeError
Thrown:
Example
var num = 1; try { num.toUpperCase(); // You cannot convert numbers to uppercase } catch(err) { document.getElementById("demo").innerHTML = err.name; }
URI Error
If you use illegal characters in URI functions, then URIError
Thrown:
Example
try { decodeURI("%%%"); // You cannot encode these percent signs in URI } catch(err) { document.getElementById("demo").innerHTML = err.name; }
Non-standard Error Object Properties
Mozilla and Microsoft have defined non-standard error object properties:
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
Do not use these properties on public websites. They do not work on all browsers.
- Previous Page JS Operator Precedence
- Next Page JS Scope