Wyjątki i obsługa wyjątków (Przewodnik programowania w języku C#)

Obsługa funkcji pomocy wyjątków języka C# zajmują nieoczekiwany lub wyjątkowe sytuacje, które występują, gdy program jest uruchomiony.Używa obsługi wyjątków try, catch, i finally słowa kluczowe, spróbuj wykonać czynności, które może się nie powieść, aby obsługiwać awarie, gdy okaże się to uzasadnione, aby to zrobić i oczyszczenie zasobów później.Wyjątki mogą być generowane przez common language runtime (CLR), przez.NET Framework lub wszelkich zewnętrznych bibliotek lub kodu aplikacji.Wyjątki są tworzone za pomocą throw słowa kluczowego.

W wielu przypadkach wyjątek może zostać wygenerowany nie zgodnie z metodą kodu nazywa się bezpośrednio, ale inną metodą dalej w stos wywołań.Gdy tak się stanie, CLR będą rozwijać stosu, szuka metody z catch zablokować dla typu określony wyjątek, a będzie wykonać pierwszy takich catch blok, że jeśli znajdzie.Jeśli uzna to za właściwe nie catch bloku w dowolnym miejscu w stos wywołań, to zakończyć proces i wyświetlić komunikat informujący użytkownika.

W tym przykładzie metoda badań dla dzielenia przez zero i połowy błędu.Bez obsługi wyjątków, program ten będzie zakończyć z są został nieobsługiwany błąd.

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.");
        }
    }
}

Omówienie wyjątków

Wyjątki mają następujące właściwości:

  • Wyjątkami są typy, które wszystko ostatecznie wywodzą się z System.Exception.

  • Użycie try blok wokół instrukcji, które może być generują wyjątki.

  • Gdy wystąpi wyjątek w try zablokować przepływ sterowania przechodzi do pierwszej procedury obsługi wyjątków skojarzony, jest obecne wszędzie w stos wywołań.W języku C# catch słowo kluczowe jest używany do definiowania procedury obsługi wyjątków.

  • Jeśli nie procedury obsługi wyjątków dla danego wyjątku, program zatrzymuje wykonywanie komunikat o błędzie.

  • Nie przechwytywać wyjątku, chyba że można poradzić i pozostawić aplikację w znanym stanie.Jeśli połowu System.Exception, ponownego zgłoszenia go za pomocą throw słowa kluczowego na koniec catch bloku.

  • Jeśli catch bloku Określa zmienną wyjątek, można go używać, aby uzyskać więcej informacji na temat typ wyjątku, który wystąpił.

  • Wyjątki mogą być jawnie generowane przez program przy użyciu throw słowa kluczowego.

  • Wyjątek obiekty zawierają szczegółowe informacje o tym błędzie, stan stosu wywołań i opis tekstowy błędu.

  • Kod w finally bloku jest wykonywane, nawet jeśli jest wyjątek.Użycie finally blok, aby zwolnić zasoby, na przykład zamknąć wszystkie strumienie lub pliki, które zostały otwarte w try bloku.

  • Wyjątek Win32 strukturę mechanizmu obsługi są zaimplementowane zarządzanych wyjątków w.NET Framework.Aby uzyskać więcej informacji, zobacz Obsługa wyjątków strukturalnych (C/C++) i Kursu Crash na głębokościach z Win32 strukturalnej obsługi wyjątków.

Sekcje pokrewne

Zobacz poniższe tematy, aby uzyskać więcej informacji na temat wyjątków i obsługa wyjątków:

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Słowa kluczowe języka C#

throw (odwołanie w C#)

try-catch (odwołanie w C#)

try-finally (odwołanie w C#)

try-catch-finally (odwołanie w C#)

SystemException

Koncepcje

Przewodnik programowania w języku C#

Hierarchia wyjątków

Inne zasoby

Obsługa i zgłaszanie wyjątków

Niezawodne programowanie .NET

minizrzutów szczególne wyjątki dla