Filtraggio delle eccezioni nel registro - Design Smell?

0

Ho usato Spring Boot 1.5 che utilizza Logback.

Ho creato oggetti evento nei controller e li ho convalidati usando @EventListener. Quando si è verificato un errore di convalida, ho generato una ApplicationSpecificException e l'ho acquisita globalmente utilizzando @ControllerAdvice @ExceptionHandler. Ho pensato che avrebbe reso il mio design più pulito.

Il fatto è che questi tipi di eccezioni (che, ora che ci penso, sono usate per il flusso di controllo) sono scritte nei miei registri. Sono abbastanza sicuro di non averne bisogno, quindi sto creando un filtro per ignorarli. Si tratta di un odore progettuale di utilizzare le eccezioni in modo non appropriato?

Una cosa che posso fare è catturare le eccezioni nel mio controller prima che si propaghino ai miei gestori di eccezioni globali, ma vengono comunque utilizzate delle eccezioni come meccanismo del flusso di controllo (tra listener di eventi e controller).

Qualche altro suggerimento? Sto facendo davvero sth qui? Dovrei refactoring il mio codice per restituire i booleani? Posso ricordare a Clean Code gli stati "Usa le eccezioni piuttosto che i codici di ritorno" se ti rende più pulito il codice. Grazie

    
posta Nikos 12.06.2017 - 22:31
fonte

1 risposta

1

Il lancio quando la convalida fallisce è buono e non è considerato il controllo del flusso. È piuttosto abortire il flusso normale a causa di una condizione eccezionale che si verifica, uno che inibisce il codice per procedere. Quindi un'eccezione è appropriata.

Questo tipo di eccezione non dovrebbe raggiungere il gestore globale, ma solo eccezioni impreviste dovrebbero finire lì e registrarsi. Quindi sì, dovresti prenderlo prima in una clausola catch che prova specificamente per questo tipo.

    
risposta data 13.06.2017 - 00:00
fonte

Leggi altre domande sui tag