Нет, это хорошо. Единственным недостатком является то, что вы в конечном итоге пишете что-то вроде:
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 один, затем общий).