Di solito hai FooException
.
/**
* @throw FooException If Foo is invalid for searching.
*/
public bool exists(Foo a)
Ma a un certo punto devi avere altre due eccezioni specifiche per Foo.
/**
* @throw FooSearchException (extends FooException) When "a" caused the error.
* @throw FooReplacementException (extends FooException) When "b" caused the error.
*/
public int replace(Foo a, Foo b)
Perché vuoi sapere quale dei due parametri ha causato l'errore.
A questo punto, cosa devo fare con il metodo exists()
? Dovrei cambiarlo in lanciare il tipo di eccezione più specifico o dovrei mantenerlo il più possibile generalizzato per identificare in modo univoco un problema in una singola routine ? Il metodo exists()
non ha bisogno di distinguere tra Search
e Replacement
parametri, ma è ancora circa un Search
. Cosa dovrei fare?
(Tieni presente che la modifica non avrà effetto su catch()
es esistente poiché sia FooSearchException
che FooReplacementException
estendono FooException
)