Мне нужно создать метод для поиска сотрудника по имени сотрудника. Есть три возможных решения для реализации этого, как показано ниже:
- Сотрудник findEmployeeById(long empId) генерирует исключение NoSuchEmployeeCheckedException;
- Необязательный findEmployeeById (длинный empId);
- Сотрудник findEmployeeById(long empId) генерирует исключение NoSuchEmployeeUnCheckedException;
Первый метод вернет экземпляр сотрудника, если идентификатор совпадает с моим репозиторием, в противном случае выдаст экземпляр исключения проверки NoSuchEmployeeCheckedException
Второй метод возвращает экземпляр необязательного java8, в то время как исключение не выбрасывается.
Последний метод аналогичен первому, но выдает экземпляр исключения UnCheck NoSuchEmployeeUnCheckedException
вместо проверенного исключения.
Я прочитал несколько сообщений на StackOverFlow о проверенных и непроверенных исключениях. Честно говоря, я до сих пор не совсем уверен, как правильно их использовать.
Джошуа Блох в «Эффективной Яве» сказал, что
Используйте проверенные исключения для восстанавливаемых условий и исключения времени выполнения для ошибок программирования (статья 58 во 2-м издании).
- Является ли findEmployeeById восстанавливаемым условием?
- Нужно ли использовать необязательное или генерировать исключение?
- какое решение лучше?