Если вы генерируете исключение на Фабрике из-за недостатка данных, я хотел бы выбросить IllegalStateException
с описанием, похожим на «не могу построить X, Y не был установлен».
Если вывыдают исключение на фабрике из-за противоречивых данных, мне нравится выбрасывать IllegalStateException
с описанием, похожим на "не может создать X, конфликтует с Z".
Если вы выбрасываете исключение вФабрика из-за плохого (или бессмысленного) значения, мне нравится бросать IllegalArgumentException
с описанием, похожим на «Y не может быть А».
Если вы генерируете исключение в Фабрике из-за отсутствиязначение, я хотел бы бросить IllegalArgumentException
с описанием, похожим на "Y не может быть нулевым".
Последнее предпочтение остается за некоторыми дебатами.Некоторые люди предполагают, что было бы лучше бросить NullPointerException
;в моем случае мы избегаем их любой ценой, поскольку многие клиенты, как правило, не читают сообщение об исключении (и предполагают, что NullPointerException означает ошибку кодирования).
В любом случае вы должны предоставить хорошее, конкретное сообщениео том, почему было выдано исключение, чтобы снизить ваши будущие расходы на поддержку, так как это исключение повысилось через несколько месяцев.