Özel durumları yakalamak için try/catch bloğunu kullanma
Bir blokta try
özel durum oluşturabilecek veya oluşturabilecek tüm kod deyimlerini yerleştirin ve özel durumu veya özel durumları işlemek için kullanılan deyimleri bloğun try
altındaki bir veya daha fazla catch
blokta yerleştirin. Her catch
blok özel durum türünü içerir ve bu özel durum türünü işlemek için gereken ek deyimleri içerebilir.
Aşağıdaki örnekte, data.txt StreamReader adlı bir dosya açılır ve dosyadan bir satır alınır. Kod üç özel durumdan herhangi birini oluşturabileceğinden bir try
blok içine yerleştirilir. Üç catch
blok özel durumları yakalar ve sonuçları konsolda görüntüleyerek bunları 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 catch
işlenmeyen özel durumları yakalar. CLR tarafından bir özel durum yakalanırsa, CLR yapılandırmanıza bağlı olarak aşağıdaki sonuçlardan biri oluşabilir:
- Hata Ayıkla iletişim kutusu görüntülenir.
- Program yürütmeyi durdurur ve özel durum bilgilerini içeren bir iletişim kutusu görüntülenir.
- Bir hata, standart hata çıkış akışına yazdırılır.
Not
Çoğu kod bir özel durum oluşturabilir ve gibi OutOfMemoryExceptionbazı özel durumlar clr tarafından herhangi bir zamanda oluşturulabilir. Uygulamaların bu özel durumlarla başa çıkmaları gerekli olmasa da, başkaları tarafından kullanılacak kitaplıkları yazarken olasılığa dikkat edin. Bir bloktaki try
kodun ne zaman ayarlanacağına ilişkin öneriler için bkz . Özel Durumlar için En İyi Yöntemler.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin