Java 8 представила Optional
API для обозначения значений, которые могут быть null
во время выполнения.В следующих случаях лучше выдавать проверенное исключение или возвращать Optional
возвращаемый тип для представления крайнего случая?
Случай 1: Возвращаемый тип Optional
private Optional<Item> getItem(String itemName)
{
for (Item item : items)
{
if (item.getName().equals(itemName))
return Optional.of(item);
}
return Optional.empty();
}
Случай 2: Бросать проверенное исключение
private Item getItem(String itemName) throws ItemNotFound
{
for (Item item : items)
{
if (item.getName().equals(itemName))
return item;
}
throw new ItemNotFound();
}
Как утверждает Мартин Фаулер, Optional
/ Шаблон особого случая - лучшая практика, но в этом простом сценарии бросать проверенное исключение тоже делает свою работу.
Чтоя должен следовать?