Ho un servizio che consente agli utenti di aggiungere contenuti dinamici a un repository. Quindi in pratica ho una classe Documento generica che contiene un elenco di proprietà per quell'oggetto specifico a seconda del tipo di documento che l'utente sta aggiungendo (ad esempio un documento di fattura ha una proprietà di numero di fattura mentre un documento wiki ha una proprietà di autore, quindi on).
Il servizio è composto da diversi livelli e ad un certo punto ho una classe che deve controllare se il documento da aggiungere è conforme al configuratore delle regole, valutando se tutte le proprietà richieste sono fornite, se sono tutte di destra tipo, ecc. Se una di queste convalide fallisce, voglio lanciare un'eccezione personalizzata che contenga lo stato di convalida.
La domanda è:
- La mia ValidationException dovrebbe essere selezionata o deselezionata?
Ho letto molte best practice su come decidere quale tipo di eccezione utilizzare. Stavo pensando di usare RuntimeException ma in questo caso l'eccezione non è causata da errori nella codifica o cose del genere ma solo dall'input dell'utente ...
D'altro canto usare un'eccezione controllata significherebbe propagare la sintassi "getta" in tutto il livello precedente dell'applicazione e probabilmente nel 90% dei metodi del servizio che rendono il codice molto meno leggibile e mantenibile.