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!

9 thoughts on “Windows Forms uygulamalarında hata geri bildirimi

  1. 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

  2. Hocam threadlerin baglı oldugu .dll dosyasına ulaşabilecegimiz bir web sitesi yada elinizde varsa boyle bir birlgiyi paylaşabilirmisiniz

  3. 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.

Leave a Reply