JavaScript
Børre Stenseth
Noen begreper >Exceptions

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);
}
...
Noen begreper >Exceptions