Rzucanie wyjątków

darek963

Do zrozumienia artykułu wymagana jest znajomość zagadnienia obsługi wyjątków.

Podczas programowania napotykamy takie miejsca w kodzie, w których zachodzi potrzeba wygenerowania własnego wyjątku (ang. exception) do kodu wywołującego. Rzucanie własnych wyjątków jest bardzo dobrą praktyką ułatwiającą debugowanie programu. Jest również przydatne podczas tworzenia dynamicznie dołączanych bibliotek (DLL). W aplikacji wywołującej metodę z pliku DLL można w łatwy sposób przechwycić i obsłużyć wygenerowany wyjątek.

Aby rzucić wyjątek, w pierwszej kolejności należy go zadeklarować i zainicjować:

Exception nazwaWyjatku;
nazwaWyjatku = new Exception("Tutaj opisz błąd.");

Można to zrobić również w jednej linii:

Exception nazwaWyjatku = new Exception("Tutaj opisz błąd.");

Teraz mamy już stworzoną instancję wyjątku, który możemy w każdym momencie rzucić. Służy do tego słowo kluczowe Throw:

throw nazwaWyjatku;

Przykład

Poniższy program (aplikacja konsolowa) pokazuje przykład rzucania własnego wyjątku i jego obsługę:
using System;

namespace AplikacjaKonsolowa
{
    class Program
    {
        static void Main(string[] args)
        {            
            try
            // <tu wystapi wyjatek rzucony w metodzie dodajLiczbyMniejszeOdPieciu()>
            {                
                Console.WriteLine("6 + 1 = " + Obliczenia.dodajLiczbyMniejszeOdPieciu(6, 1));
            }
            // </tu wystapi wyjatek rzucony w metodzie dodajLiczbyMniejszeOdPieciu()>
            catch (Exception wyjatek)
            // <obsluga wygenerowanego wyjatku>
            {
                // wyswietlamy komunikat bledu w konsoli
                Console.WriteLine(wyjatek.ToString());
            }
            // </obsluga wygenerowanego wyjatku>

            Console.ReadKey();
        }
    }

    class Obliczenia
    {
        public static int dodajLiczbyMniejszeOdPieciu(int liczba1, int liczba2)
        {
            if (liczba1 < 5 && liczba2 < 5)
            {
                return liczba1 + liczba2;
            }
            else
            {
                // <tworzenie nowego wyjatku>
                Exception eZleArgumentyMetody;
                eZleArgumentyMetody = new Exception("Metoda dodajLiczbyMniejszeOdPieciu() dodaje tylko liczby mniejsze od 5.");
                // </tworzenie nowego wyjatku>

                // <rzucanie wyjatku>
                throw eZleArgumentyMetody;
                // </rzucanie wyjatku>
            }
        }
    }

}

Zobacz też:

0 komentarzy