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:
Tworzenie i zgłaszanie wyjątków (Przewodnik programowania w języku C#)
Wyjątki generowane przez kompilator (Przewodnik programowania w języku C#)
Porady: obsługa wyjątków za pomocą bloku try/catch (Przewodnik programowania w języku C#)
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
try-catch-finally (odwołanie w C#)
Koncepcje
Przewodnik programowania w języku C#