Przechwytywanie wyjątków instrukcją try catch

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2710 razy

Instrukcja try catch umożliwia przechwytywanie paskudnych wyjątków, które można również samemu definiować. Oto prosty przykład:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ProgramHandleException { class Program { class ToSmall : Exception // mój własny wyjątek, który wykorzystam, gdy wartość zmiennej będzie za mała { }; class ToBig : Exception // mój własny wyjątek, który wykorzystam, gdy wartość zmiennej będzie za duża { }; static void Main(string[] args) { int age = 0; do { Console.Write("Proszę podać wiek: "); try { age = int.Parse(Console.ReadLine()); if (age <= 0) { throw new ToSmall(); // tworzę wyjątek do obsłużenia } else if (age > 120) { throw new ToBig(); // i tu też tworzę wyjątek do obsłużenia } } catch (ToSmall e) // obsługa wyjątku ToSmall (za mała) { Console.WriteLine("Zaniżyłeś swój wiek trochę za bardzo!"); } catch (ToBig e) // obsługa wyjątku ToBig (za duża) { Console.WriteLine("Zawyżyłeś swój wiek trochę za bardzo!"); } catch (FormatException e) { Console.WriteLine("Wpisałeś coś, co nie było liczbą!"); } catch (Exception e) // inne wyjątki { Console.WriteLine("{0} wyjątek przechwycony", e); } } while (age <= 0 || age > 120); Console.ReadLine(); } } }

Jak wynika z powyższego kodu, utworzenie własnego wyjątku wymaga stworzenia klasy, która z kolei musi dziedziczyć po klasie Exception. Obiekt tejże klasy należy utworzyć i wywołać za pomocą słowa kluczowego throw.

Przykładowy wynik działania powyższego kodu:

Proszę podać wiek: wiek
Wpisałeś coś, co nie było liczbą!
Proszę podać wiek: -1
Zaniżyłeś swój wiek trochę za bardzo!
Proszę podać wiek: 121
Zawyżyłeś swój wiek trochę za bardzo!
Proszę podać wiek: 20

Lista wszystkich dostępnych wyjątków:

Propozycje książek