Przechwytywanie wyjątków instrukcją try catch
Stronę tą wyświetlono już: 1975 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;

Tytuł:
Wzorce projektowe w .NET Core 3. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk

Tytuł:
Jak pisać świetne gry 2D w Unity. Niezależne programowanie w języku C#
Autor:
Jared Halpern

Tytuł:
C# 9.0 w pigułce
Autor:
Joseph Albahari

Tytuł:
C# 9.0. Leksykon kieszonkowy
Autor:
Joseph Albahari, Ben Albahari

Tytuł:
C# 8.0. Kompletny przewodnik dla praktyków. Wydanie VII
Autor:
Mark Michaelis

Tytuł:
C# 8.0 w pigułce
Autor:
Joseph Albahari, Eric Johannsen

Tytuł:
Asynchroniczność i wielowątkowość w języku C#
Autor:
Grzegorz Lang

Tytuł:
C# 8.0. Programowanie. Tworzenie aplikacji Windows, internetowych oraz biurowych
Autor:
Ian Griffiths

Tytuł:
C# 8.0. Leksykon kieszonkowy
Autor:
Joseph Albahari, Ben Albahari

Tytuł:
Wzorce projektowe w .NET. Projektowanie zorientowane obiektowo z wykorzystaniem C# i F#
Autor:
Dmitri Nesteruk