Проблема, с которой я столкнулся во всей этой идее, заключается в том, что исключения должны, как правило, создаваться в соответствии с тем, что может пойти не так, например, NullPointerException
, тогда как PersonException
, по-видимому, относится к объекту, связанному с любой катастрофой, разворачивающейся без давая понять, что пошло не так. Объект Person вызвал исключение? Это потому, что у Человека есть внутренняя логическая проблема, или потому что плохие аргументы были предоставлены одному из его методов? Или исключение произошло из-за того, что лицо не было найдено в базе данных?
Тот факт, что вы думаете об исключениях, относящихся к обоим объектам, просто усиливает мои опасения. Я предлагаю переосмыслить дизайн ваших исключений (EntityNotFoundException, BadArgumentException, MinorCannotOrderPornException) и, надеюсь, ответ на вашу дилемму будет более очевидным.