Пользовательские исключения, сколько это слишком много? - PullRequest
0 голосов
/ 07 августа 2020

Мне было интересно, сколько у меня должно быть исключений, я видел другие сообщения, в которых говорилось, что хорошо иметь несколько исключений, это улучшает читаемость вашего кода и лучшее понимание ошибки, если она есть.

Теперь у меня 5 исключений, проверьте UserNotFoundException и AccountExpenseNotFoundException, в основном оба исключения одинаковы, но относятся к разным сущностям.

Пример исключения

Это плохая практика? Должен ли я сделать исключение, например EntityNotFound, чтобы справиться с этим?

1 Ответ

1 голос
/ 07 августа 2020

Нет, это хорошо. Единственным недостатком является то, что вы в конечном итоге пишете что-то вроде:

try {
   bookkeeperthingie();
} catch (AccountExpenseAlreadyExistsException |
   AccountExpenseNotFoundException | UsernameOrPasswordInvalidException |
   Blablabla | Morebla e) {
}

, чтобы избежать этого, убедитесь, что ваши исключения следуют иерархии. Например, у вас может быть:

public class BookkeepingException extends Exception {
    public BookkeepingException(String msg) { super(msg); }
    public BookkeepingException(String msg, Throwable cause) { super(msg, cause); }
}

public class AccountExpenseAlreadyExistsException extends BookkeepingException { ... }

и так далее. Если вы считаете особенно правдоподобным, что пользователь вашего API захочет поймать какое-либо исключение типа «бухгалтерия ie не найдено», сделайте это уровнем в иерархии (но это мне не кажется правильным).

Теперь вы можете написать:

try {
    bookkeepingthingie();
} catch (BookkeepingException e) {
}

, если вас не особо заботит, что пошло не так, и поймать более конкретный c, если вы это сделаете, или даже объедините их (если не найдено, сделайте это. для любой другой бухгалтерской проблемы сделайте это - вы можете сделать это с иерархией; сначала поймайте более конкретный c один, затем общий).

...