Makale Özeti

Bir önceki yazıya devam niteliğindeki bu yazıda, daha önce genel bilgi sahibi olduğumuz Enterprise Library Exception Handling Application Block (EHAB)'la logging handler ve replace handler kulanarak iki Uygulama gerçekleştireceğiz.

Makale

EL-Exception Handling Application Block -2

Bir önceki yazımızda, EHAB'ın genel olarak özellikleri ve nasıl ayarlarının yapılabileğini inceledik. Bugünkü yazımızda da, iki farklı uygulamayı nasıl gerçekleştirebileceğimizi, daha detaylı bir şekilde göreceğiz. İlk olarak hatamızı text formatında loglayacağız. Daha sonra da hatamızı, başka bir hata  ismi ve mesajı ile değiştirerek (muhtemel)  önemli bilgilerimizi dışarıdaki bir insandan saklamış olacağız.

1-Hep beraber bir  uygulama yapalım. Web Uygulamamızın adını, EHABcs (veya EHABvbNET)  koyalım.

2-Solutin Exlorer penreresinden, projemizi sağ tıklayıp, Add Reference'den c/Program Files/Microsoft Enterprise Library-June 2005/bi'den

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll'i seçerek ekleyelim.

3-Web formuna aşağıdaki kodları, referansları web formuna eklemak için ekleyelim:

C#.NET:de

using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling; 
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging;

VB.NET'de:

Imports Microsoft.Practices.EnterpriseLibrary.ExceptionHandling; 
Imports Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging;

4-Formumuzun üzerine bir düğme taşıyalım ve düğmenin click eventi'ne aşağıdaki kodları ekleyelim. Burada amacımız sıfıra bölme hatası yaratmak.

4-

 

 

 

VB.NET:

C#.NET: VB.NET
try

{

         int i=5;

        int j=0;

        int k=i/j;

}

catch(Exception ex)

{

        if (ExceptionPolicy.HandleException(ex, "Exception Policy"))

        {

             throw;

        }

}

 

Try

   Dim i, j, k As Integer

     i = 8

    j = 0

    k = i / j

Catch ex As Exception

   If (ExceptionPolicy.HandleException(ex, "Exception Policy")) Then

         Throw

    End If

End Try

 

5- Şimdide Programlar>>Microsoft patterns & practices>>Enterprise Library June>>Enpterpris Library Configutation'ı seçelim. Sonra da,

File>>Open Application'dan uygulamamızın Web.Config dosyasını seçelim. Uygulama ismimizi de yazgelistirEHABcs (yazgelistirEHABvbNET) yapalım

 

 

 

6-  Uygulama ismimize sağ tıklayıp>>New>>Exception Handling Application Block'u seçersek  EHAB'la berabar Configuration Application Block'ta eklenir. Bir önceki yazımızda, EHAB'ın CoAB'a bağımlılığından söz etmiştik

 

 

7-   EHAB'ın üstüne gelip sağ tıklarsak>>New>>Exception Policy'i seçersek,  Exception'ları  ktegozie edeceğimiz bir üst yapıyı eklemiş oluruz. Biz default olarak gelen Exception Policy ismini değiştirmeyelim..

 

 

 

 

 

 

 

 

8-   Exception Policy sağ tıkla>>New>>Exception Type'ı tıklarsak  karşımıza çıkan Type Selector'dan Exception çeşidi seçeriz. Biz Exception'ı alalım

9-   Exception>>New>>Logging Handler seçtiğimiz an, Logging and Instumentation Application Block'a uygulamamıza eklenmiş olur.

 

 

10-   Logging Handler'i seçip, sağ panodan LogCategory'i trace yapalım

11-   Client Settings'se gelip Tracing Enabled'i True yapalım.

 

 12-   Distibuter Settings'te  sağ panoda Default Category'i Trace yapalım.

 

13-  Flat File destination'da trace'nin tutulacağı dosya ismi, trace'in başlıgı, dip notu ayarlanabilir. Default olarak trace.log adındaki dosyada, dipnotu ve başlığı olmadan tutulur.

 

 

14-   Eğer şu ana kadar yaptıklarımızı kaydeder ve  Solution Explorer'da All Files'ı tıklarsak, 3 tane config dosyasının eklenmiş olduğnu görürüz. Bu config dosyalarını incelersek, bizim GUI aracı ile girdiğimiz bilgilerin bu dosyalarda XML formatında tutulduğunu görürüz.

 

 

 

 

 

15-  Şimdi de Uygulamamızı çalıştırıp, butonu tıklayalım. Daha sonra da  Olay Görüntüleyicisine (Event Handler'e gidersek

 

 

Error logging with 'Flat File Sink' sink from configuration. The default log sink will be used instead to process the message.

 

Summary for Enterprise Library Distributor Service:

======================================

-->

Message:

Timestamp: 05.09.2005 22:30:05

Message: HandlingInstanceID: 7299d621-01ee-4757-9256-fa8d7837cc8e

An exception of type 'System.DivideByZeroException' occurred and was caught.

----------------------------------------------------------------------------

09/05/2005 22:30:05

Type : System.DivideByZeroException, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Message : Attempted to divide by zero.

Source : EHABcs

Help link :

TargetSite : Void Button1_Click(System.Object, System.EventArgs)

Stack Trace : at EHABcs.WebForm1.Button1_Click(Object sender, EventArgs e) in c:.aspx.cs:line 57

Additional Info:

MachineName : NÎSEBÎN

TimeStamp : 05.09.2005 19:30:05

FullName : Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null

AppDomainName : /LM/w3svc/1/root/EHABcs-5-127704113483774384

ThreadIdentity :

WindowsIdentity : NÎSEBÎN

Category: Trace

Priority: 0

EventId: 100

Severity: Error

Title:Enterprise Library Exception Handling

Machine: NÎSEBÎN

App Domain: /LM/w3svc/1/root/EHABcs-5-127704113483774384

ProcessId: 668

Process Name: C:.NET.1.4322_wp.exe

Thread Name:

Win32 ThreadId:1260

Extended Properties:

--> MachineName: NÎSEBÎN

--> TimeStamp: 05.09.2005 19:30:11

--> FullName: Microsoft.Practices.EnterpriseLibrary.Common, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null

--> AppDomainName: /LM/w3svc/1/root/EHABcs-5-127704113483774384

--> WindowsIdentity: NÎSEBÎN

Exception Information Details:

======================================

 

 

Dikkat: Eğer  policy ismini kod kısmında yanlış girersek aşağıdaki hata ile karşılaşırız

 

 

 

Şimdi de Replace Handler'ı nasıl ekleyip kullanacağımızı  hep beraber görelim. İlk 8 adım yukaıdaki gibi olmak üzere, 9. adımdan itibaren devam edelim.

 

replace exception:

 

 

 

 

9-  Exception>>New>>Replace Handler

10-Exception'u tıklayıp, daha önce default olarak NotifhRethrow olan PostHandlingAction'u ThrowNewException yapalım.

11- Replace Handler'i seçip, sağ taraftak, panodan, ExceptionMessage: Bu Hata Mesajını Biz Oluşturduk diye girelim ve ReplaceExceptionType'ı da ApplicationException olarak seçelim.

 

12- Şu ana kadar yaptıklarımızı kaydedelim.

exceptionhandlingconfiguration.config dosyasını solution explorer'da tıklayıp açarsak GUI de girdiğimiz ayarların XML olarak nasıl tutulduğunu görürüz.

 

 

13- Buton1 click eventindeki kodu aşağıdaki gibi yapalım. Niyetimiz  catch bloğu içerisinde Throw New System.Exception  ile bir hata ve mesajı oluşturmak sonra da, bu hatayı yakalayan EHAB'ın ne yaptığını görmek için atayı EHAB'n emin ellerine teslim etmek:=)

VB.NET:

 

VB..NET:
Try

        Throw New System.Exception("Bu Hata Mesajı Orjinal Hata Mesajı")

Catch ex As Exception

         If (ExceptionPolicy.HandleException(ex, "Exception Policy")) Then

              Throw

        End If

End Try

 

 

 

 

C#.NET:

 

C#.NET:
try

{

          throw new System.Exception("Bu Hata Mesajı Orjinal Hata Mesajı");

}

 catch(Exception ex)

{

         if (ExceptionPolicy.HandleException(ex, "Exception Policy"))

       {

               throw;

      }

}

 

 

 

Uygulamayı çalıştırıp buton'u tıkladığımızda karşımıza aşağıdaki hata mesajı çıkar. Ve orjinal System.Exception hatasının, System.ApplicationException ile yer değiştirdiğine de dikkat edelim.

Sonuç: Bu yazıda, bir önceki yazıda anlatılan EHAB'la nasıl iki farklı Uygulama Geliştirdiğimizi hep beraber gördük.

 

 

Serdar Temiz     serdartemiz@yahoo.com