Özel durumları yakalamak için try/catch bloğunu kullanma

Bir blok içinde özel durum oluşturabilen veya oluşturabilen herhangi bir kod deyimini yerleştirin try ve bir veya daha fazla blok altındaki bir veya daha fazla blok içindeki özel durumu veya özel durumları işlemek için kullanılan deyimleri yerleştirebilirsiniz catch try . Her catch bir blok özel durum türünü içerir ve bu özel durum türünü işlemek için gereken ek deyimler içerebilir.

Aşağıdaki örnekte, StreamReader data.txt adlı bir dosya açılır ve dosyadan bir satır alır. Kod üç özel durum oluşturmasından dolayı bir blok içine yerleştirilir try . Üç catch blok özel durumları yakalar ve sonuçları konsola görüntüleyerek işler.

using namespace System;
using namespace System::IO;

public ref class ProcessFile
{
public:
    static void Main()
    {
        try
        {
            StreamReader^ sr = File::OpenText("data.txt");
            Console::WriteLine("The first line of this file is {0}", sr->ReadLine());
            sr->Close();
        }
        catch (Exception^ e)
        {
            Console::WriteLine("An error occurred: '{0}'", e);
        }
    }
};

int main()
{
    ProcessFile::Main();
}
using System;
using System.IO;

public class ProcessFile
{
    public static void Main()
    {
        try
        {
            using (StreamReader sr = File.OpenText("data.txt"))
            {
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}");
            }
        }
        catch (FileNotFoundException e)
        {
            Console.WriteLine($"The file was not found: '{e}'");
        }
        catch (DirectoryNotFoundException e)
        {
            Console.WriteLine($"The directory was not found: '{e}'");
        }
        catch (IOException e)
        {
            Console.WriteLine($"The file could not be opened: '{e}'");
        }
    }
}
Imports System.IO

Public Class ProcessFile
    Public Shared Sub Main()
        Try
            Using sr As StreamReader = File.OpenText("data.txt")
                Console.WriteLine($"The first line of this file is {sr.ReadLine()}")
            End Using
        Catch e As FileNotFoundException
            Console.WriteLine($"The file was not found: '{e}'")
        Catch e As DirectoryNotFoundException
            Console.WriteLine($"The directory was not found: '{e}'")
        Catch e As IOException
            Console.WriteLine($"The file could not be opened: '{e}'")
        End Try
    End Sub
End Class

Ortak dil çalışma zamanı (CLR), bloklar tarafından işlenmeyen özel durumları yakalar catch . CLR tarafından bir özel durum yakalanmışsa, CLR yapılandırmanıza bağlı olarak aşağıdaki sonuçlardan biri ortaya çıkabilir:

  • Hata ayıklama iletişim kutusu görüntülenir.
  • Program yürütmeyi durduruyor ve özel durum bilgileri içeren bir iletişim kutusu görünür.
  • Bir hata Standart hata çıkış akışınayazdırılır.

Not

Çoğu kod bir özel durum oluşturabilir ve gibi bazı özel durumlar OutOfMemoryException herhangi bir zamanda CLR tarafından oluşturulabilir. Uygulamalar bu özel durumlarla uğraşmak zorunda olmasa da, diğer kullanıcılar tarafından kullanılacak kitaplıkları yazma olasılıklarının farkında olun. Bir bloktaki kodun ne zaman ayarlanacağı hakkında öneriler için try bkz. özel durumlar Için en iyi uygulamalar.

Ayrıca bkz.