Questa potrebbe essere una domanda inutile basata sull'opinione, lo stile e il contesto, ma mi sono tormentato il cervello nel tentativo di decidere se fare o meno eccezioni personalizzate e mi piacerebbe sentire alcuni pro e contro da parte di chiunque abbia esperienza da entrambi gli approcci.
Ad esempio, sto cercando di decidere tra una ObjectNotFoundException personalizzata e IllegalArgumentException / IllegalStateException.
(Si noti che non intendo lanciare un'eccezione ogni volta che un servizio non è in grado di trovare un oggetto con un identificatore dato. In tal caso, restituiamo semplicemente un valore nullo.Io parlo di quando un'azione deve essere eseguita su un oggetto con un identificatore dato. In questo caso, ci si aspetta che l'oggetto in questione esista, quindi se non lo fa, vogliamo lanciare un'eccezione.)
Da una parte, una "GiraffeNotFoundException" è esplicita e potrebbe essere gestita in modo diverso da una generica IllegalStateException, ma poi di nuovo suppongo che sarebbe importante se tale differenziazione fosse effettivamente richiesta. Un altro pro è che un messaggio personalizzato per tale eccezione può essere impostato come messaggio predefinito per questa eccezione (riducendo un po 'di ridondanza).
D'altra parte, potrebbe non essere una buona idea ingombrare il codice sorgente con eccezioni personalizzate. Anche con le eccezioni standard, la classe Assert di Spring può essere utilizzata in modo abbastanza efficiente. Non ci sono intenzioni di pubblicare il nostro codice come libreria di terze parti, quindi non ci sono pressioni per l'utilizzo di eccezioni standard da quella parte.
Qualche altro pensiero?