Come rimuovere il codice del blocco delle eccezioni duplicato

6

Ho un buon numero di classi di servizio e DAO che ha lo stesso set di blocchi di codice di eccezione a 30 righe che viene ripetuto e viene visualizzato nel rapporto Duplicazione codice.

L'approccio a cui posso pensare è

  • Estrai i blocchi di codice delle eccezioni comuni in un metodo comune e chiama
    il metodo in un colpo

    Riorganizzare i metodi per assicurarsi che ci sia sempre una voce e un'uscita puntare a Servizi o DAO che avranno un solo insieme di eccezioni codice.

Esistono modi migliori per affrontare questo scenario?

    
posta dosakiller 28.01.2013 - 13:51
fonte

2 risposte

5

Estrai la gestione delle eccezioni in un metodo:

public interface Action {
    public void execute() throws ...;
}

public static void handleErrors(Action action) throws ... {
   try {
      // setup .....
      action.execute();
   } catch (...) {
      // ...
   } finally {
      // cleanup ...
   }
}

Quindi chiamalo in questo modo:

handleErrors(new Action(){ public void execute() throws ... {
    // ...
}});

La sintassi è brutta, ma è ancora molto meglio della duplicazione dell'errore che gestisce decine di volte. Ogni volta che si duplica più di un paio di righe, è necessario fermarsi e capire come evitare tale duplicazione. In Java, ciò significa spesso utilizzare interfacce e classi anonime per passare un blocco di codice da eseguire all'interno di una logica di controllo comune. La stessa tecnica può essere riutilizzata per eliminare il codice di loop duplicato.

    
risposta data 28.01.2013 - 17:37
fonte
0

Considera la possibilità di creare un gestore di eccezioni esplicite.

È un approccio simile al tuo primo suggerimento, ma pone invece i metodi all'interno di un oggetto. È anche simile a vecchie applicazioni monolitiche con gestori di interrupt dedicati. In ogni caso, il punto è lo stesso: scrivi il codice di gestione una volta e poi chiama se necessario.

    
risposta data 28.01.2013 - 15:25
fonte

Leggi altre domande sui tag