Exceptions
JavaScriptv som alle andre rimelig moderne språk har unntakshandtering. Det vi i korthet si at vi kan forsøke å foreta oss noe uten å miste kontrollen dersom det går galt.
JavaScript implementerer try - catch på samme måte som vi finner i andre språk. For eksemple slik:
function update1(){ try{ t= document.getElementById('prix').innerHTML; document.getElementById("dump1").innerHTML=t; } catch(e){ console.error(e); alert(e); document.getElementById("dump1").innerHTML=""; } }
test:
Eller vi kan bruke den tredje komponenten: finally. Denne pakker inn en blokk som skal kjøres uavhengig av om vi har hatt en catch-situasjon eller ikke.
function update2(){ var t=""; try{ t= document.getElementById('prix').innerHTML; } catch(e){ console.error(e); alert(e); t="noe gikk galt"; } finally{ document.getElementById("dump2").innerHTML=t; } }
test:
Det er en god vane å bruke denne mekanismen til å teste om en nettleser har de egenskapene vi er ute etter. F.eks. kan en typisk kodesnutt fra en gammel IE-tolerant AJAX-request være slik:
function establishRequest(){ var theRequest=null; if (window.XMLHttpRequest) theRequest = new XMLHttpRequest(); else if (window.ActiveXObject) { try { theRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try {theRequest= new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {theRequest=null;} } } else theRequest=null; return theRequest; }
Her bruker vi en kombinasjon av tester på undefined (window.XMLHttpRequest og window.ActiveXObject) og try - catch. Mer om AJAX i modulen AJAX
Det er også mulig å bruke throw for å provosere fram exceptions.
... try{ t=document.getElementById("prix").innerHTML; n=parseInt(t); if(isNaN(n)) throw "ikke et tall"; } catch(error){ console.error("fant en feil: ",error); } ...