Bu makalede, yapılandırılmış özel durum işleme Microsoft Visual C# .NET, Microsoft Visual C# 2005 veya Microsoft Visual C# 2008 kullanmayı açıklamaktadır.
Gereksinimler
Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
- Visual C# .NET veya sonraki sürümlerini Visual C#
Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
- Visual C# .NET veya sonraki sürümlerini Visual C#
- Microsoft Visual Studio. NET'in veya veya sonraki sürümlerini Visual Studio'nun
Yapılandırılmış özel durum işleme
Visual C# .NET, güçlü bir sağlayan yapılandırılmış özel durum işleme ve hataları işlemek için daha kolay okunabilir bir yol sunar. Yapılandırılmış özel durum işleme hata işleyicileri aynı yordamı, diğer hata işleyicisi içinde iç içe sağlar. Yapılandırılmış özel durum işleme, aşağıdakine benzer bir blok sözdizimi kullanan
ıf... else... End ıf ifadesi. Bu Visual C# .NET kod veya kod daha sonraki sürümlerde Visual C#, daha okunaklı ve bakımını daha kolay yapar. Bir özel durum ifadeleri işleme kullanarak, özel durumlar Visual C# .NET veya sonraki sürümlerini Visual C# işleyebilir:
- deneyin
- Yakala
- Son olarak
- Durum
Yapılandırılmış hata işleme için temel sözdizimi aşağıdaki gibidir:
try
{
// Code that is expected to raise an exception.
}
catch(Exception e)
{
// Code that can handle an error.
}
finally
{
// Code to do any final cleanup.
}
Deneyin bloğunda geçerli Visual C# kod içerebilir veya başka bir blokla ile
deneyin veya başka bir sıradüzeni
deneyin blokların içerebilir. Herhangi bir noktada özel durum ortaya çıktığında, ortak dil çalıştırma modülünün bu kodu kapsayan ve herhangi bir ek satırlar kod çalıştırmak en yakın
deneyin bloğu için arar. Denetim, daha sonra varsa, eşleşen
catch bloğu ve ilişkili
finally bloğunun geçirilir. Böylece, her bir
catch bloğu belirli bir hata işleme
catch birden çok ifadeleri de belirtebilirsiniz.
Bir özel durum yakalama
- Microsoft Visual Studio. NET'i, Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio.NET ' i işaretleyin ve Visual Studio.NET</a1>'ı tıklatın.
Microsoft Visual Studio 2005'te Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio 2005 ' e gelin ve sonra da Microsoft Visual Studio 2005 ' i tıklatın.
Microsoft Visual Studio 2008'de Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio 2008 ' e gelin ve sonra Visual Studio 2008 ' i tıklatın. - Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
- Yeni proje) iletişim kutusunda, aşağıdaki adımları izleyin:
- Project Types altında Visual C# Projects ' ı tıklatın.
Not Visual Studio 2005 veya Visual Studio 2008'de, Visual C#Project Types altında'ni tıklatın. - Şablonları altında Konsol uygulaması) tıklatın.
- Ad kutusuna MyConsoleApp yazın.
- Konum kutusundaki C:\ yazın ve Tamam ' ı tıklatın.
- Main() işlevi aşağıdaki kodu ekleyin:
int a = 0;
int b = 10;
int c = 0;
try
{
a = b / c;
}
catch (Exception e)
{
Console.WriteLine("A run-time error occurred.");
}
finally
{
Console.ReadLine();
} - Uygulamayı çalıştırmak için <a0></a0>, Hata Ayıkla menüsünde Başlat ' ı tıklatın. Kod, sayı, 0 ile bölme dener. Bu işlem geçerli değil ve bir sıfıra bölme hatasına neden oluyor. Ancak, bu hata catch bloğu yakalar ve konsol penceresi aşağıdaki hata iletisini görüntüler:
Bir çalışma zamanı hatası oluştu.
- Konsol penceresi kapatın.
Birden çok özel durumları yakalamak
Bu bölümde, birden çok
catch ifadeleri farklı hataları işlemek için kullanılacak gösterilmiştir.
- Bu makalenin "Catch an Exception" bölümünde oluşturduğunuz Console Application projeyi açın.
- Varolan Main() işlev kodu aşağıdaki kodla değiştirin:
int a = 2147483647;
int b = 0;
int c = 0;
try
{
a = checked(a + 1);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Error: Divide by Zero", e.Message);
}
catch (OverflowException e)
{
Console.WriteLine("Error: Overflow", e.Message);
}
finally
{
Console.ReadLine();
} bu kod, iki catch bloğu içerir:- Bir catch bloğu önceki sıfıra bölme hatası yakalar.
- Bir catch bloğu yeni taşma hatası yakalar.
- Uygulamayı çalıştırmak için <a0></a0>, Hata Ayıkla menüsünde Başlat ' ı tıklatın. Konsol penceresinde aşağıdaki hata iletisini görüntüler:
- Konsol penceresi kapatın.
- Her zaman ortaya çıkabilecek her hata tahmin edemez çünkü bir catch bloğu için tahmin edemez tüm özel durumlar ekleyebilirsiniz. Örneğin, Son olarak deyim tahmin edemez hataları yakalamak için ve uygun bir hata iletisi görüntülemek için önce aşağıdaki kodu ekleyin:
catch (Exception e)
{
Console.WriteLine("Error: ", e.Message);
} - Dosya menüsünde Kapat Solution ' ı tıklatın.
Bir özel durum
Yapılandırılmış özel durum işleme
catch ifade, bir özel durum yakalamak için kullanır. Yapılandırılmış özel durum işleme ile ayrıca bir özel durum. Örneğin, bir
Özellik kümesi yordamın içinde veri doğrulaması gerçekleştirdiğinizde, bir iş kuralı ihlal ederseniz bir hata oluşturması gerekebilir, çünkü bir özel durum yararlı.
- Microsoft Visual Studio. NET'i, Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio.NET ' i işaretleyin ve Visual Studio.NET</a1>'ı tıklatın.
Microsoft Visual Studio 2005'te Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio 2005 ' e gelin ve sonra da Microsoft Visual Studio 2005 ' i tıklatın.
Microsoft Visual Studio 2008'de Başlat ' ı tıklatın, Programlar ' ın üzerine gelin, Visual Studio 2008 ' e gelin ve sonra Visual Studio 2008 ' i tıklatın. - Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
- Yeni proje) iletişim kutusunda, aşağıdaki adımları izleyin:
- Project Types altında Visual C# Projects ' ı tıklatın.
Not Visual Studio 2005 veya Visual Studio 2008'de, Visual C#Project Types altında'ni tıklatın. - Şablonları altında Konsol uygulaması) tıklatın.
- Ad kutusuna MyNewConsoleApp yazın.
- Konum kutusundaki C:\ yazın ve Tamam ' ı tıklatın.
- Proje menüsünde add class.
- Yeni Öğe Ekle iletişim kutusundaki clsPerson.cs <a2>ad</a2> kutusuna yazın ve sonra Aç ' ı tıklatın.
Not Visual Studio 2005 veya Visual Studio 2008'de, Ekle ' yi tıklatın. - ClsPerson sınıfında aşağıdaki kodu ekleyin:
public clsPerson()
{
}
private int mintAge;
public int Value;
public int Age
{
get
{
Age = mintAge;
return Age;
}
set
{
if(Value > 0)
mintAge = Value;
else
throw new ArgumentException("Age cannot be negative.");
}
} Bir yaş özelliği bu kodu oluşturur. Age özelliği, 0 küçüktür bir sayı ayarlamak, kullanıcı sınıfının çalışırsa, bir kişi, negatif bir yaş olamaz çünkü bir hata oluşturulur. - Class1.csMain() işlevinde aşağıdaki kodu ekleyin:
clsPerson p = new clsPerson();
try
{
p.Age = -1;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
} - Uygulamayı çalıştırmak için <a0></a0>, Hata Ayıkla menüsünde Başlat ' ı tıklatın. Konsol penceresinde aşağıdaki hata iletisini görüntüler:
Geçerlilik süresi eksi olamaz.
- Konsol penceresi kapatın.
Kod dökümü tamamlayın.
Bir özel durum yakalama
using System;
namespace MyConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int a = 0;
int b = 0;
int c = 0;
try
{
a = b / c;
}
catch (Exception e)
{
Console.WriteLine("A run-time error occurred.");
}
finally
{
Console.ReadLine();
}
}
}
}Birden çok özel durumları yakalamak
using System;
namespace MyConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
int a = 2147483647;
try
{
a = checked(a + 1);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Error: Divide by Zero", e.Message);
}
catch (OverflowException e)
{
Console.WriteLine("Error: Overflow", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Error: ", e.Message);
}
finally
{
Console.ReadLine();
}
}
}
}
Bir özel durum
using System;
namespace MyNewConsoleApp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
clsPerson p = new clsPerson();
try
{
p.Age = -1;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
Console.ReadLine();
}
}
}
public class clsPerson
{
public clsPerson()
{
}
private int mintAge;
public int Value;
public int Age
{
get
{
Age = mintAge;
return Age;
}
set
{
if(Value > 0)
mintAge = Value;
else
throw new ArgumentException("Age cannot be negative.");
}
}
}
}Daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: