JavaScript debuggen III:
Error handler met 'onerror'
Het is bijna onmogelijk voor een programmeur om een 100% foutenvrij programma te schrijven. In elke programmeertaal krijg je te maken met uitzonderingen (exceptions) en fouten (errors). Gelukkig kun je die door je programma laten afhandelen zonder dat het vastloopt.
Foutafhandeling is een heel belangrijk onderdeel van een goed programma. In oudere versies van JavaScript was een goede foutafhandeling lastig te realiseren. In latere versies zijn goede mogelijkheden voor efficiënte foutafhandeling beschikbaar gemaakt.
Op deze pagina wordt één van die twee mogelijkheden besproken: de event-handler onerror.
Opmerking: Deze aanpak is primair bedoeld 'Runtime Errors' op te vangen in een 'gereed' programma. Het is minder geschikt om programmeerfouten op te sporen tijdens het ontwikkelen van een nieuw JavaScript. Daarvoor bestaan andere mogelijkheden, zie de items JavaScript debuggen en JavaScript debuggen II: Error handler met try en catch.
- De toepasbaarheid van onerror is beperkt. Gebruik is alleen mogelijk in het window-object, het image-object
en met de tags <img>, <audio> en <video>.
- Voorbeeld met de <img>-tag:
Als de figuur aa.jpg niet beschikbaar is verschijnt er een alert met een foutmelding.
<img src="aa.jpg" onerror="alert('fout met laden van figuur aa.jpg')"> - Voorbeelden met het <image>-object:
Als de figuur aa.jpg niet beschikbaar is, wordt atwork04.gif geladen in plaats van aa.jpg.<img src="aa.jpg" name="demo" onerror="this.src='atwork04.gif'">
In een JavaScript maak je een function, bijvoorbeeld figuurFout(). Je reageert vervolgens op een fout met:document.Images['demo'].onerror = figuurFout - Voorbeeld met het <window>-object:
window.onerror = Wat er gedaan moet worden als er een fout optreedt.Zie ook het item JavaScript-fouten tegenhouden.
- Binnen de <object>-tag is er vaak een parameter onerror, waarmee fouten bij het laden
en het uitvoeren van het object kunnen worden opgevangen:
<param name="onerror" value="...">
Het hangt echter af van het gebruikte object of het bruikbaar is of niet. De mogelijkheid om de parameter onerror te gebruiken moet nl. in het object zelf zijn geprogrammeerd. Je bepaalt echter zelf wat de reactie op een fout is.
Zie het item Videofilmpjes op je website in HTML 4 voor het gebruik van <object> en <param>.
- Het is met deze benadering niet mogelijk om onderscheid te maken tussen verschillende fouten. Als je dat wilt moet je de aanpak met try en catch gebruiken.
Opmerking:
Het window-object wordt in de HTML-standaarden niet genoemd. Toch ondersteunt elke browser het, gewoon uit pure noodzaak
(zonder dat kun je geen werkende browser maken).