dinsdag 31 juli 2012

JavaScript voor mensen, hobbits en elven - Deel 20: Het magische schild Try-Catch


Het eerste slagveld

“Verdedigen is de sleutel passend op het slot van een overwinning.”
                                                                                                - Sam Rain
Vechten met het zwaard van Function objecten en gooien met fruit van variabelen voldoet in de meeste situaties. Echter zijn mensen, hobbits, elven en andere wezens uit Midden-Aarde niet onoverwinnelijk. Een goede verdediging weert slagen af – en met de elvenmagie van JavaScript is dat nog eens heel gemakkelijk met try-catch.
Een Orcse tegenaanval (door tovenaars systeemfouten of ‘errors’ genoemd) geschied vaak wanneer de optimistische hobbit het niet verwacht. Zelfs het onneembare fort van Rohan kent een zwakke schakel, en menig wezen weet hoe tragisch het had kunnen aflopen zonder de try-catch van de mensen. Het enige wat een hobbit hoeft te doen is de potentiële zwakke punten te verdedigen met het schild van try-catch.
‘zonder try-catch’                                    ‘met try-catch’
funtion optellen(a,b){                               function verdedigen(a,b){
var c;                                                         var c;
return (c=a+b)                                           try{ /*wordt altijd uitgevoerd*/
}                                                                 c=a+b;
                                                                   }
                                                                  catch(fout){
                                                                  c=0; /*wordt alleen uitgevoed bij een fout*/
                                                                  }
                                                                 {
Hoewel er niet zomaar iets fout zal gaan ‘zonder’ try-catch, ligt de val van een fort op een zwak punt. Stel als een ijverige elf de ‘optellen’ functie gebruikt voor een cruciale muur, en dat één van de variabelen een waarde bevat, die niet verwacht wordt elders in het magische script, dan zijn de gevolgen desastreus. Een fout kan zorgen dat een script stopt – en dat is dus meteen het einde van een slag. De try-catch ‘verwacht’ dat er een potentieel gevaar kan zijn en slaat de gegevens van de fout op in de variabele tussen de haakjes van catch, waar je als hobbit een alternatief ‘plan’ kunt plaatsen tussen de accolades. Omdat alles een object is in JavaScript –net als fouten dus- is een enkele variabele voldoende om de fout te ‘vangen’.
Wanneer gebruikt de moedige hobbit try-catch? Uiteindelijk gaat het om te anticiperen op een mogelijke Orcse aanval, dus:
·      wanneer je functies zeer precies zijn bedacht met een bepaald soort gegevenstype als resultaat;
·      alle gegevens en informatie waar je als hobbit geen controle over hebt, zoals gebruikers invoer of uitwisseling met andere programma’s;
·      wanneer een functie een specifiek ‘formaat’ van gegevens verwacht.
Het is ook mogelijk het schild van try-catch te gebruiken als wapen met de ‘throw’-spreuk. Met ‘throw’ maak je bewust een fout, waardoor de magie binnen de ‘catch’ wordt uitgevoerd.
function verdedigen(orcAanval) { var x;
 try {
  if (orcAanval==”super groot zwaard”){
   throw “rent hard weg!”; /*maakt een systeemfout aan en stopt het script hierop*/
  }
else{
 x=”verdedigd dapper de aanval af”;
}
catch(engeAanval) { /*enge aanval bevat*/
 x = engeAanval;
}
return x;
}
Als we de bovenstaande magie zouden uitspreken met:
var strijd = verdedigen(“bijl”);
dan zou de variabele strijd de tekenreeks “verdedigd dapper de aanval af” krijgen. Echter met:
var strijd = verdedigen(“super groot zwaard”);
wordt alles onder ‘throw’ genegeerd en vliegt de elvenmagie meteen naar ‘catch’, waardoor de variabele strijd het ‘throw’ object bevat (de tekenreeks: “rent hard weg!”).
Met het schild van try-catch hoeven hobbits zich minder zorgen te maken voor grote enge Orcs die boven hun uitpuilen; de magie in het schild kan bijna alles tegenhouden – indien goed ‘getimed’.
Meer lezen over Programmeren? Klik hier voor de inhoudsopgave van alle artikelen!

©SamRain
JavaScript - 20

Geen opmerkingen:

Een reactie posten