Windows Forms uygulamalarında hata geri bildirimi
Selam sana .NET dostu!
Çoğu zaman, bir uygulama geliştirirken; o uygulamada (elbette uygulama çalışırken) meydana gelecek hataların, bir şekilde bir yere kaydedilmesini veya uygulama geliştiriciye e-posta ile gönderilmesini isteriz. İşte bu olaya hata geri bildirimi (error feedback) diyoruz.
ASP.NET platformunda uygulama geliştiren arkadaşlar bilirler, bu platformda hata geri bildirimi için genellikle Global.asax dosyasında bulunan Application_Error metodu kullanılır. Bu metod sayesinde, oluşan son hata, istenen kişiye e-posta ile bildirilebilir veya kendi hata kaydı (error log) tutma yönteminiz varsa buraya kayıt yapabilirsiniz.
Peki, Windows Forms uygulamalarında bu ihtiyacı nasıl gidereceğiz? Çözüm gayet basit. Windows Form uygulamamızın Program.cs ana class’ında bir event yakalayacağız ve bu event işimizi görecek:
İşte sevgili dostlar, yukarıda göreceğiniz ThreadException eventi, Windows uygulamanızı çalıştıran thread içinde, herhangi bir yerde hata meydana gelirse tetiklenir. Sizde bu eventi yakalayarak istediğiniz işi yaptırabilirsiniz. Ben, hataları bir dosyaya kaydetmeyi uygun buldum:
Ve Form1 nesnesinin Load olayında bir hata yaptım:
Daha sonra uygulamamı build ederek, .exe dosyasını çalıştırdım (yine F5’e basmıyoruz, çünkü o zaman Visual Studio’nun debugger’i exception çalıştıracaktır).
İşte, HataOku.txt dosyamın içeriği:
Attempted to divide by zero. ErrorFeedback at ErrorFeedback.Form1.Form1_Load(Object sender, EventArgs e) in C:\….\ErrorFeedback\Form1.cs:line 23….
İşte bu kadar, siz isterseniz bir de e-posta göndermeyi deneyin!
Mutlu kodlamalar!
uygulamada birden fazla thread varsa , hepsi üzerinde oluşan hataları yakalar mı ?
Windows Uygulamarında varolan thread’lerin tamamı bir main thread’a bağlıdır. Application.ThreadException olayı da bu main thread’e bağlı olduğundan, sorunun cevabı evet. Diğer hataları da yakalar
Hocam threadlerin baglı oldugu .dll dosyasına ulaşabilecegimiz bir web sitesi yada elinizde varsa boyle bir birlgiyi paylaşabilirmisiniz
Erkan,
Thread’ler, bir "dosya" ya bağlı olamazlar. İşlemci üzerinde çalışan parçalardır onlar. Dolayısıyla, böyle bir dosyanın varlığı bile sözkonusu olamaz.
Merhaba türkay hocam birazda wpf üzerine eğilebilirmisiniz ?
Çok zengin bir paylaşım olmuş teşekkürler hocam
Teşekkürler hocam. Bloğunuzu takip ediyorum gerçekten yazılarınız çok güzel. Birde yeni yazı eklendiğinde mailimize uyarı gelse daha iyi olmaz mı?
Güzelmiş…
Süpermiş olm.