Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3098 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:

  • System.AccessViolationException;
  • System.AppDomainUnloadedException;
  • System.ApplicationException;
  • System.ArgumentException;
  • System.ArgumentNullException;
  • System.ArgumentOutOfRangeException;
  • System.ArithmeticException;
  • System.ArrayTypeMismatchException;
  • System.BadImageFormatException;
  • System.CannotUnloadAppDomainException;
  • System.DataMisalignedException;
  • System.DivideByZeroException;
  • System.DllNotFoundException;
  • System.DuplicateWaitObjectException;
  • System.EntryPointNotFoundException;
  • System.Exception;
  • System.ExecutionEngineException;
  • System.FieldAccessException;
  • System.FormatException;
  • System.IndexOutOfRangeException;
  • System.InsufficientMemoryException;
  • System.InvalidCastException;
  • System.InvalidOperationException;
  • System.InvalidProgramException;
  • System.InvalidTimeZoneException;
  • System.MemberAccessException;
  • System.MethodAccessException;
  • System.MissingMemberException;
  • System.MissingMethodException;
  • System.MulticastNotSupportedException;
  • System.NotFiniteNumberException;
  • System.NotImplementedException;
  • System.NotSupportedException;
  • System.NullReferenceException;
  • System.ObjectDisposedException;
  • System.OperationCanceledException;
  • System.OutOfMemoryException;
  • System.OverflowException;
  • System.PlatformNotSupportedException;
  • System.RankException;
  • System.StackOverflowException;
  • System.SystemException;
  • System.TimeoutException;
  • System.TimeZoneNotFoundException;
  • System.TypeInitializationException;
  • System.TypeLoadException;
  • System.TypeUnloadedException;
  • System.UnauthorizedAccessException;
  • System.UriFormatException;
Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.