26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

I C# er alle exceptions delt i et stort antal klasser – her har vi et eksempel på klassen<br />

System.OverflowException. Hvis et int var blevet tildelt værdien 10.000.000.000 ville der også<br />

være opstået et overflow for max værdien for en int er ca 2,1 milliard. Hvis vi ’kommer til’ at dele<br />

med 0 opstår en DivideByZeroException! osv.<br />

Hovedsagen er dog at normalt ønsker vi ikke at programmet skal crashe og blot vise en<br />

systemboks! Læg også mærke til at udskriften af summen aldrig bliver til noget hvis en exception<br />

opstår – det hele stopper midt i processen. Hovedsagen er at vi normalt ikke ønsker at systemet skal<br />

gå ind i programmet ’på egen hånd’ – vi ønsker selv at ’catche’ de uheld der kan ske.<br />

Den nemmeste løsning er at anvende en try .. catch .. finally konstruktion således:<br />

try{<br />

while(svar=="ja")<br />

{<br />

Console.WriteLine("Indtast et tal i alt max 5!");<br />

byte b=byte.Parse(Console.ReadLine());<br />

sum+=b;<br />

bytes[i++]=b;<br />

Console.WriteLine("\nVil du indtaste endnu et tal: ja nej ?");<br />

svar=Console.ReadLine();<br />

}<br />

}<br />

catch{<br />

}<br />

finally{<br />

}<br />

Console.WriteLine("Der opstod fejl ved indtastningen!");<br />

Console.WriteLine("Sum: {0}",sum);<br />

Programmet fungerer nu sådan at det som står i den sidste blok (finally blokken) ALTID udføres<br />

uanset hvad der sker – der udskrives altså altid en sum så programmet slutter på en for os bedre<br />

måde trods alt!<br />

Hvis der opstår en eller anden exception i try blokken springer programmet straks ned til 1. linje i<br />

catch blokken (og fortsætter derefter i finally blokken). Hvis der ikke opstår ’fejl’ gennemløbes try<br />

blokken og derefter finally blokken.<br />

Vi undgår fuldstændigt de fæle system meddelelser! Alle programmer som ’kan gå galt’ bør have<br />

en konstruktion der ligner denne. Finally blokken bruges som ofte til ’at rydde op’ – hvis en fil er<br />

åbnet og når går galt skal den lukkes igen og det skal ske under alle omstændigheder.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!