Hatasız bir uygulama yazmak için kullanıcıyı ortadan kaldırmaktır diye duymuştum bir zamanlar. Yazılımlarımızda hatalar olacak. Bu kaçınılmaz ama en aza indirmek içinde çaba sarfetmek te bizim görevimiz. Lakin bunun için heryere try cacth blokları da koymak pek mantıklı bir yaklaşım değil:)
Bu durumlar için, özellikle web uygulamalarında "Error Feedback" denilen bir yöntem çok sık kullanılır.
Amaç;
çalışma zamanı bir sayfa da yada ona bağlı bir uygulamada hata oluştuğunda, hata ile ilgili detayların geliştiriciye mail olarak gönderilmesi daha sonra da kullanıcıya hata mesajı yerine basit bir html sayfası gösterilmesinden ibaret.

Öncelikle ihtiyaçları belirleyelim. Yani hangi bilgilerin gönderilmesi gerekiyor bir bakalım.

Error Class

Gönderilecek Feefback için güzle bir html şablonu oluşturalım. Şablon içinde bilgi gireceğimiz alanları küme parantez parametreleri ile işaretleteyim ki String nesnesini Format metotu ile rahatça kullanabilelim.

Mail Text

Daha iyi anlamak için Error nesnesi için yazdığımız yardımcı ErrorProvider nesnesine deki CreateMessage asdlı sabit metota göz atalım.

Error Provider

Herşey tamam gibi, sırada oluşabilecek hataları elde elebileceğimiz Global Application Class' ından yardım almaya geldi. Global.asax ' ın Application_Error adlı metotu, uygulama içinde hata oluştuğunda otomatik devreye girer. Bizde burada devreye girip ihtiyacımız olab kodları yazıyoruz.

Global.asax

Son bir adım kaldı. Kullanıcı hata mesajları yerine bizim belirlediğimiz sayfaları görsün istiyorsak;

Web.Config

web.config dosyası içindeki customError -> mode özelliğini On olarak değiştiririz. error alt düğümleri ile olası hatalar için  uygun sayfaların yollarını redirect özellikleri ile belirttikten sonra uygulamada bitmiş oluyor. Çeşitlendirmek mümkün.

Örnek proje.

Yorumlar
Ekleyen

hocam süper maaşallah

Ekleyen

merhabalar

yapılan uygulamayı kendim aynen uyguladım fakat string.format kısmında hata veriyor.

daha sonra sizin uygulamanızı indirip denedim. yine aynı kısımda hata verdi. neden olabilir acaba...

 

 

Ekleyen

Merhaba,

css kodlarında bir sorun olmuş. Düzelttim.

Ekleyen

teşşekkür ederim...