Funkcja obsługi wyjątków w języku C# pomaga radzić sobie z nieoczekiwanymi lub nietypowymi sytuacjami podczas działania programu. Obsługa wyjątków wykorzystuje słowa kluczowe, try, catch i final, aby wypróbować określone operacje w przypadku niepowodzeń, i choć te operacje mogą się nie zdać, możesz spróbować, jeśli jesteś pewien, że musisz to zrobić i chcesz potem oczyścić zasoby. Runtime Common Language (CLR), . NET Framework lub dowolny kod biblioteki lub aplikacji firm trzecich może generować wyjątki. Wyjątki tworzone są za pomocą słowa kluczowego typu rzut. W wielu przypadkach wyjątki nie mogą być wywoływane bezpośrednio przez kod, lecz przez inną metodę niżej w stosie wywołań. W takim przypadku CLR rozszerza stos, aby sprawdzić, czy istnieje metoda zawierająca blok catch dla danego typu wyjątku, i jeśli znajdzie taką metodę, wykonuje pierwszy taki blok catch. Jeśli w stosie wywołań nie zostanie znaleziony żaden odpowiedni blok catch, proces zostaje zakończony, a użytkownikowi wyświetlony jest komunikat. W tym przykładzie stosuje się metodę wykrywania, czy występuje sytuacja, w której jest podzielona przez zero; Jeśli tak, błąd zostanie wykryty. Jeśli nie ma obsługi wyjątków, program zakończy działanie i wygeneruje błąd "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.");
- }
- }
- }
Skopiuj kod
|