Classe di gestione delle eccezioni: statica o orientata agli oggetti?

0

Sto lavorando in un servizio Windows (usando VB.Net) per uso interno del mio dipartimento. Quando viene catturato un certo tipo di eccezione ( FooException per ora), seguo la stessa logica:

  • Registra l'eccezione
  • Invia un'email a qualcuno

Per riutilizzare il codice e non copiare e incollare le stesse righe in ogni blocco catch FooException ho creato un metodo FooExceptionHandler nella mia classe ExceptionHandling . Così ho finito con un codice come questo:

FooExceptionHandler(fooException)
{
   //log the exception
   try
   {
      //send email
   }
   catch SmtpException
   {
      //log  the smtp exception
   }
}

La mia domanda riguarda come organizzare il codice. Questo dovrebbe essere un metodo statico? Tutte le classi di gestione delle eccezioni dovrebbero essere statiche? Dovrebbe essere un singleton? Dovrebbe essere orientato agli oggetti?

Se il caso orientato agli oggetti è il modo migliore, dovrei creare un nuovo oggetto in ogni blocco catch o è meglio avere una variabile di classe?

    
posta garnav 17.04.2013 - 09:38
fonte

1 risposta

0

La risposta giusta dipende da quanto è grande la tua applicazione e da come la collaudi. Se la tua applicazione è grande, un'applicazione aziendale modulare e usi i test unitari, allora l'unica soluzione che hai veramente è quella di orientarti agli oggetti.

In tal caso, crei un'interfaccia IExceptionHandler e tutte le classi client utilizzano tale interfaccia. Puoi quindi utilizzare un modello di creazione di oggetti come un metodo di fabbrica per creare oggetti di gestione delle eccezioni che implementano tale interfaccia o gestire con Iniezione di dipendenza .

In questo modo si rende il codice di produzione disaccoppiato dal meccanismo di gestione delle eccezioni e si adatta facilmente o si modifica il comportamento di gestione delle eccezioni in futuro senza toccare il codice in altre classi.

Se la tua applicazione è di piccole dimensioni e principalmente per uso personale, implementa la logica di gestione delle eccezioni nel modo che ritieni più comodo per te.

    
risposta data 17.04.2013 - 13:36
fonte