Функцията за обработка на изключения в езика C# ви помага да се справите с всякакви неочаквани или необичайни ситуации, които възникнат докато програмата ви работи. Обработката на изключения използва ключови думи try, catch и накрая, за да опита определени операции и да се справи с неуспехи, и въпреки че тези операции имат потенциал да се провалят, можете да опитате, ако сте сигурни, че трябва да го направите и искате да почистите ресурсите след това. Общ езиков период на изпълнение (CLR), . NET Framework или която и да е библиотека или код на приложение от трета страна може да генерира изключения. Изключения се създават чрез ключовата дума throw. В много случаи изключенията не могат да бъдат предизвикани от метод, извикан директно от код, а чрез друг метод по-надолу в стека за повиквания. В този случай CLR разширява стека, за да види дали има метод, който съдържа блок за улавяне за конкретния тип изключение, и ако намери такъв метод, изпълнява първия такъв блок. Ако няма подходящ блок за улавяне никъде в стека за повиквания, процесът се прекратява и се показва съобщение на потребителя. В този пример се използва метод за откриване дали има ситуация, в която се дели на нула; Ако има такава, грешката се улавя. Ако няма обработка на изключения, тази програма ще прекрати и ще създаде грешка "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.");
- }
- }
- }
Копирай код
|