Undantagshanteringsfunktionen i C#-språket hjälper dig att hantera oväntade eller ovanliga situationer som uppstår medan ditt program körs. Undantagshantering använder nyckelorden try, catch och slutligen för att försöka vissa operationer för att hantera fel, och även om dessa operationer kan misslyckas kan du försöka göra det om du är säker på att du behöver göra detta och vill rensa resurser efteråt. Common Language Runtime (CLR), . NET Framework eller något tredjepartsbibliotek eller applikationskod kan generera undantag. Undantag skapas med hjälp av nyckelordet kast. I många fall kan undantag inte väckas av en metod som anropas direkt av kod, utan av en annan metod längre ner i anropsstacken. I detta fall expanderar CLR stacken för att se om det finns en metod som innehåller ett catch-block för just den undantagstypen, och om den hittar en sådan metod exekverar den det första sådana catch-blocket som hittas. Om inget lämpligt catch-block hittas någonstans i anropsstacken avslutas processen och ett meddelande visas för användaren. I detta exempel används en metod för att upptäcka om det finns en situation där den är delad med noll; Om det finns det, fångas felet. Om det inte finns någon undantagshantering kommer detta program att avsluta och ge ett felmeddelande "DivideByZeroException Not Handled".- 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.");
- }
- }
- }
Kopiera koden
|