Funcția de gestionare a excepțiilor din limbajul C# te ajută să gestionezi orice situație neașteptată sau neobișnuită care apare în timp ce programul tău rulează. Gestionarea excepțiilor folosește cuvintele cheie try, catch și finally pentru a încerca anumite operații pentru a gestiona eșecurile, iar deși aceste operații pot eșua, poți încerca dacă ești sigur că trebuie să faci asta și vrei să cureți resurse ulterior. Timp de rulare în limbaj comun (CLR), NET Framework sau orice bibliotecă sau cod de aplicație terță parte poate genera excepții. Excepțiile sunt create folosind cuvântul-cheie throw. În multe cazuri, excepțiile pot să nu fie ridicate de o metodă numită direct prin cod, ci de o altă metodă mai jos pe stivă de apeluri. În acest caz, CLR extinde stiva pentru a vedea dacă există o metodă care conține un bloc de prindere pentru acel tip particular de excepție, iar dacă găsește o astfel de metodă, execută primul bloc de prindere găsit. Dacă nu se găsește niciun bloc de prindere adecvat în stiva de apeluri, procesul este terminat și un mesaj este afișat utilizatorului. În acest exemplu, se folosește o metodă pentru a detecta dacă există o situație în care se împarte la zero; Dacă există, eroarea este detectată. Dacă nu există gestionare a excepțiilor, acest program se va termina și va produce o eroare "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.");
- }
- }
- }
Cod de copiere
|