Unntakshåndteringsfunksjonen i C#-språket hjelper deg å håndtere uventede eller uvanlige situasjoner som oppstår mens programmet ditt kjører. Unntakshåndtering bruker nøkkelordene try, catch og til slutt for å prøve visse operasjoner for å håndtere feil, og selv om disse operasjonene har potensial til å feile, kan du prøve å gjøre det hvis du er sikker på at du må gjøre dette og ønsker å rydde opp i ressursene etterpå. Common Language Runtime (CLR), . NET Framework eller ethvert tredjepartsbibliotek eller applikasjonskode kan generere unntak. Unntak opprettes ved hjelp av nøkkelordet kast. I mange tilfeller kan unntak ikke reises av en metode som kalles direkte av kode, men av en annen metode lenger ned i kallestakken. I dette tilfellet utvider CLR stakken for å se om det finnes en metode som inneholder en catch-blokk for den aktuelle unntakstypen, og hvis den finner en slik metode, utfører den den første slike catch-blokken som finnes. Hvis ingen passende catch-blokk finnes noe sted i kallestakken, avsluttes prosessen og en melding vises til brukeren. I dette eksempelet brukes en metode for å oppdage om det er en situasjon hvor den er delt på null; Hvis det er det, blir feilen oppdaget. Hvis det ikke er noen unntakshåndtering, vil dette programmet avsluttes og produsere en "DivideByZeroException Not Handled"-feil.- class ExceptionTest
- {
- static double SafeDivision(double x, double y)
- {
- if (y == 0)
- throw new System.DivideByZeroException();
- return x / y;
- }
- static void Main()
- {
- // Input for test purposes. Change the values to see
- // exception handling behavior.
- double a = 98, b = 0;
- double result = 0;
- try
- {
- result = SafeDivision(a, b);
- Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
- }
- catch (DivideByZeroException e)
- {
- Console.WriteLine("Attempted divide by zero.");
- }
- }
- }
Kopier koden
|