Merhabalar,
Sizde takdir edersinizki yazdığınız programda herşey herzaman yolunda gitmeyebilir. İşte bu gibi durumlardagelişmiş hata yönetim teknikleri kullanarak programımızı çökmekten kurtarabiliriz. Programınız çöktüğünde bildiğiniz gibi çirkin bir sarı hata sayfasıyla karşılaşırsınız.
Asp.Net te hata yönetiminin 3 yolu vardır.
1. try-catch bloğu. Bu Structured Exception Handling (SEH) i çağırır.
2. Hata Olayları.
3. Genel Hata Sayfası
try-catch Bloğu
try
{
con = new SqlConnection("integrated security=SSPI;
data source= (local);persist security info=False;
initial catalog=Northwind");
da = new SqlDataAdapter("Select * from Olmayantablo", con);
ds = new DataSet();
da.Fill(ds);
}
catch(SqlException ex)
{
return "Başarısız Bağlantı " + ex.Message;
}
finally
{
con.Dispose();
}
return "Başarılı Bağlantı";
gördüğünüz gibi olmayan bir tabloya bağlantı kurmaya çalışıyoruz.
Hata oluştuğu anda catch bloğuna girecektir ve bize hatayı gösterecektir.
Finally bloğu ise her halukarda çalışacak olan bloktur.
Burada ise açılan bağlantıyı tekrar kapatıyoruz.
catch bloğunu
catch(Exception ex)
{
}
şeklindede yapabilirdik ama iyi bir programlama için özel hataları yakalamamız gerekir.bunun için
SqlException kullandık.
.Net te Hata Yönetimi için Debug/Exception menülerini kullanabilirsiniz.
Hata Olaylarını Kullanmak
Asp.Net te 3 farklı hata olayı vardır.Bunlar sayesinde kullanıcı dostu hata mesajları verebilirsiniz.
1.Page_error: sayfadaki hataları yakalar.Web Form da kullanılabilir
2.Global_Error: Uygulamadaki hataları yakalar.Global.asax dosyasında kullanılabilir
3.Application_Error: tüm uygulamalardaki hataları yakalar.Global.asax dosyasında kullanılabilir
bunun yanında Server objesinin şu 2 metodu da hata olaylarında kullanılabilir.
GetLastError: Uygulamada Oluşan En son hatayı verir
ClearError:Uygulamada oluşan tüm hataları temizler. bu sadece Application_Error olayında kullanılabilir.
örnekler;
private void Page_Error(object sender, System.EventArgs e)
{
Exception ex = Server.GetLastError();
Response.Write("Sayfadaki Hata Yakalandı<br>");
}
protected void Application_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Response.Write("Uygulamadaki hata yakalandı <br>");
Server.ClearError();
}
protected void Global_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Response.Write("Globaldeki hata yakalandı <br>");
}
Genel Hata Sayfası Kullanımı
bu yöntemde tasarımınıza uygun bir hata sayfası oluşturursunuz ve
kullanıcıya bir hata olşutuğunda bunun görüntülenmesini sağlarsınız.
yine bu yöntemde de 2 teknik mevcut.
1. web.config dosyasındaki customErrors tagını kullanmak
2.Sayfanın @Page tanımındaki errorPage özelliğini kullanmak.
örnekler;
web.config de kullanımı. Bunu <system.web> in içerisine koymalısınız.
<customErrors mode="On" defaultRedirect="Hata.aspx">
<error statusCode="404" redirect="Hata404.aspx" />
</customErrors>
Sayfada kullanımı;
<%@ Page language="c#" Codebehind="HataSayfasi.aspx.cs"
AutoEventWireup="false"
Inherits="ExceptionHandling.HataSayfasi"
errorPage="Hata.aspx" %>
Hatasız projeler dilerim. Hatasız kul olmadığı gibi Hatasız kodda olmaz :)
Umarım faydalı olmuştur. Saygılar.
Mustafa KOÇER
mkocer@dotnetkosesi.com
Bu yazıyı ilk değerlendiren siz olun
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5