У меня есть код, который дает идентификатор пользователя утилите, которая затем отправляет электронное письмо этому пользователю.
emailUtil.sendEmail(userId, "foo");
public void sendEmail(String userId, String message) throws MailException {
/* ... logic that could throw a MailException */
}
MailException
может быть вызван по нескольким причинам, проблемам с адресом электронной почты, проблемам с шаблоном почты и т.д.
Мой вопрос заключается в следующем: создаете ли вы новый тип исключения для каждого из этих исключений, а затем обрабатываете их по отдельности или создаете одно MailException, а затем храните что-то в этом исключении (что-то читаемое компьютером, а не текст описания), что позволяет нам делать разные вещи в зависимости от того, что на самом деле произошло.
Изменить:. Как пояснение, исключения не для журналов, а что - нет, это связано с тем, как код реагирует на них. Чтобы продолжить работу с примером почты, скажем, что при отправке почты это может быть неудачно, потому что у вас нет адреса электронной почты, или это может быть, потому что у вас нет адреса электронной почты действительный, или он может потерпеть неудачу и т.д.
Мой код хотел бы по-разному реагировать на каждую из этих проблем (в основном, путем изменения сообщения, возвращаемого клиенту, а также фактической логики).
Было бы лучше иметь реализацию исключения для каждой из этих проблем или одно зонтичное исключение, у которого было что-то внутреннее (enum say), которые позволяют коду различать, какая проблема была.