Aracılığıyla paylaş


try-finally (C# Reference)

finally Bloğu ayrılmış olan tüm kaynakları temizleniyor yarar deneyin engellemek ve herhangi bir kod çalıştırmak için gereken yürütme, bir özel durum oluþsa bile try blok.Deyimleri genellikle bir finally engelleme denetimi terk ettiğinde çalıştırılır bir try deyimi, olup transfer denetiminin yürütülmesini normal yürütülmesi sonucunda oluşur bir break, continue, goto, veya return deyimi veya bir özel durum dışında yayılmasını try ifadesi.

İçinde ilişkili işlenmiş bir özel finally blok çalıştırılacak garanti.Ancak yürütülmesi istisna işlenmeyen, finally blok bağımlı nasıl özel durum rahatça işlem tetiklenir.Sırasıyla, bilgisayarınızı nasıl ayarlandığına bağlıdır.Daha fazla bilgi için bkz: clr işlenmeyen özel durum işleme.

Genellikle, ne zaman işlenmeyen bir özel durum biten bir uygulama olmasa da finally blok çalıştırıldığında önemli değildir.Ancak, ifadeler varsa, bir finally bile bu durumda tek çözüm çalıştırılması gereken taşıdır eklemek için bir catch engellemek için try-finally ifadesi.Alternatif olarak, atılan, özel durumu yakalamak try , engelleyecek bir try-finally deyimi çağrı yığını daha yüksek.İçerir yöntemini çağırır yönteminde özel durum yakalayabilirsiniz try-finally deyimi, ya da o yöntemi çağıran yöntemi veya başka bir yöntem Çağırma yığınındaki.Özel durum yakalandı değil, yürütülmesini finally blok bağlıdır olup işletim sistemine bir özel durum tetiklemek seçer üzerinde işlem açılımı.

Örnek

Aşağıdaki örnekte, bir geçersiz dönüştürme deyimi neden olan bir System.InvalidCastException özel durum.İşlenmeyen özel durum.

public class ThrowTestA
{
    static void Main()
    {
        int i = 123;
        string s = "Some string";
        object obj = s;

        try
        {
            // Invalid conversion; obj contains a string, not a numeric type.
            i = (int)obj;

            // The following statement is not run.
            Console.WriteLine("WriteLine at the end of the try block.");
        }
        finally
        {
            // To run the program in Visual Studio, type CTRL+F5. Then 
            // click Cancel in the error dialog.
            Console.WriteLine("\nExecution of the finally block after an unhandled\n" +
                "error depends on how the exception unwind operation is triggered.");
            Console.WriteLine("i = {0}", i);
        }
    }
    // Output:
    // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
    //
    // Execution of the finally block after an unhandled
    // error depends on how the exception unwind operation is triggered.
    // i = 123
}

Aşağıdaki örnekte, özel TryCast çağrı yığını daha yukarı yönteminde yöntem yakalandı.

public class ThrowTestB
{
    static void Main()
    {
        try
        {
            // TryCast produces an unhandled exception.
            TryCast();
        }
        catch (Exception ex)
        {
            // Catch the exception that is unhandled in TryCast.
            Console.WriteLine
                ("Catching the {0} exception triggers the finally block.",
                ex.GetType());

            // Restore the original unhandled exception. You might not
            // know what exception to expect, or how to handle it, so pass 
            // it on.
            throw;
        }
    }

    public static void TryCast()
    {
        int i = 123;
        string s = "Some string";
        object obj = s;

        try
        {
            // Invalid conversion; obj contains a string, not a numeric type.
            i = (int)obj;

            // The following statement is not run.
            Console.WriteLine("WriteLine at the end of the try block.");
        }
        finally
        {
            // Report that the finally block is run, and show that the value of
            // i has not been changed.
            Console.WriteLine("\nIn the finally block in TryCast, i = {0}.\n", i);
        }
    }
    // Output:
    // In the finally block in TryCast, i = 123.

    // Catching the System.InvalidCastException exception triggers the finally block.

    // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
}

Hakkında daha fazla bilgi için finally, bkz: try-catch-finally.

C# da içeren deyimini kullanarak, aynı işlevleri için kullanışlı bir sözdizimi sağlayan bir try-finally ifadesi.

C# dil belirtiminin

Daha fazla bilgi için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Görevler

Nasıl yapılır: açıkça istisna atar

Başvuru

C# anahtar sözcükler

deneyin, catch ve throw ifadelerini (C++)

Özel durum işleme ifadeleri (C# Reference)

throw (C# Reference)

try-catch (C# Reference)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu