Abbiamo lo scenario seguente nella nostra azienda:
Ci sono alcuni oggetti business a cui sono associate delle regole di business. Uno di questi oggetti, Person, ha le seguenti regole:
- Una persona deve avere un nome (cioè in termini di codifica non nulli, né vuoti)
- Il nome di una persona non deve essere costituito esclusivamente da spazi e / o schede
L'oggetto business ha nel suo costruttore un parametro per nome, che usa un tipo non annullabile per ricevere il nome. In modo simile c'è una proprietà che memorizza il nome come un tipo non annullabile.
Nel costruttore viene generata un'eccezione ( MyException
) quando il nome è vuoto dopo aver ritagliato gli spazi e / o le schede.
C'è anche un backend che si occupa di questi oggetti usando REST api attraverso JSON
In questo momento stiamo usando una libreria (Jackson) per analizzare i dati JSON ricevuti nel nostro back-end. Abbiamo specificato nei nostri DTO che il campo per il nome non può essere nullo o mancante dall'oggetto JSON. In caso di deserializzazione di un oggetto JSON con un campo nome mancante / nullo, la libreria genera un'eccezione.
Se una persona ricevuta nel backend lancia MyException
, il backend converte tale eccezione in un messaggio JSON dettagliato da inviare al client.
Ma se il JSON ricevuto di una persona non ha il campo 'nome' o è nullo, lasciamo che la libreria lanci la sua eccezione e questo è l'errore presentato al client.
La domanda è: l'eccezione generata dalla libreria di analisi deve essere considerata uguale a MyException
dato che entrambe sono regole aziendali?