Programmeren in JavaScript/Errors
Errors of fouten komen heel vaak voor in script. Soms is het een fout in de code en soms is het een fout van de gebruiker. Daarom moet je aan errorhandling doen of beter gezegd zorgen dat je fouten er niet voor zullen zorgen dat je script blokkeert door die fout.
try en catch
bewerkentry en catch zijn bedoeld om fouten op te vangen. Met het try blok probeer je de code en met het catch blok vang je mogelijk fouten op. In het volgende voorbeeld is de code fout.
JavaScript-code: try en catch
document.write("Dit gebeurt er voor de nonsensfunctie().<br />");
nonsensfunctie();
document.write("Dit gebeurt er achter de nonsensfunctie().<br />");
Met als uitvoer:
Dit gebeurt er voor de nonsensfunctie().
Er bestaat namelijk geen nonsensfunctie(), als je dit zou uitvoeren in een browser, zal de browser stoppen met de pagina te verwerken en krijg je alleen maar te zien wat er voor de nonsensfunctie() was. Alles wat er achter komt zal niet op het scherm worden getoond. We gaan nu de fout opvangen met try en catch.
JavaScript-code: try en catch
document.write("Dit gebeurt er voor de nonsensfunctie().<br />");
try {
nonsensefunctie();
} catch(fout) {
document.write("Er is een fout opgetreden.<br />");
}
document.write("Dit gebeurt er achter de nonsensfunctie().");
Met als uitvoer:
Dit gebeurt er voor de nonsensfunctie(). Er is een fout opgetreden. Dit gebeurt er achter de nonsensfunctie().
Zoals je ziet wordt de fout opgevangen door catch. Alles wat in het catch blok voorkomt zal alleen maar gebeuren wanneer er een fout is. fout die staat in de catch is een variabele die een object bevat waarmee je enkele dingen mee kunt doen. Zoals bijvoorbeeld achterhalen wat de fout precies is. Als je het volgende zou doen in de catch:
JavaScript-code: try en catch
document.write("Er is een fout gebeurd. Namelijk " + fout.discription + ".<br />");
Dan krijg je het volgende:
Dit gebeurt er voor de nonsensfunctie(). Er is een fout gebeurd. Namelijk undefined. Dit gebeurt er achter de nonsensfunctie().
Met fout.discription kun je de omschrijving van de fout opzoeken. In dit geval is het undefined en dit komt overeen met onze fout, we hebben namelijk een niet bestaande functie gebruikt.
throw
bewerkenMet throw kun je je eigen foutmeldingen maken. Met throw "gooi" je een foutbericht naar de catch die het verder zal afhandelen. Dat kan een string, een integer, een boolean of een object zijn.
JavaScript-code: try en catch
var x = prompt("Geef een getal van 1 tot 10","");
try{
if(x > 10){
throw "Uw getal is te hoog!";
}else if(x < 0){
throw "Uw getal is te laag!";
}
}catch(fout){
document.write(fout);
}
finally
bewerkenNaast try en catch is er ook nog het finally blok. Alles wat in het finally blok voorkomt zal sowieso worden uitgevoerd. Het maakt niet uit of er wel of niet fouten zijn voorgekomen in het try blok.
JavaScript-code: finally
document.write("Dit gebeurt er voor de nonsensfunctie().<br />");
try {
nonsensefunctie();
} catch(fout) {
document.write("Er is een fout gebeurd. Namelijk " + fout.description + ".<br />");
} finally {
document.write("Dit gebeurt er in het finally blok.");
}
Met als uitvoer:
Dit gebeurt er voor de nonsensfunctie(). Er is een fout gebeurd. Namelijk undefined. Dit gebeurt er in het finally blok.