[英]Best Practice: Using Java 8 Optional or throwing Exception
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();
}
正如Martin Fowler所倡導的那樣, Optional
/特殊情況下的模式是一種更好的做法,但是在這種簡單的情況下,拋出一個已檢查的異常也可以做到。
我應該關注哪一個?
基本上可以歸結為:缺少該用例是否有意義?
可以說一個應用有用戶。 用戶可以將電話號碼添加到他的帳戶信息中。 由於他的俯卧位號碼不必存在,因此可以使用可選的。 電話號碼可能在那里,但可能丟失。 客戶端代碼必須處理Optional / nullable值。
另一方面,如果我想查看他的電子郵件,則在注冊時必須填寫。 然后例外就是要走的路。 電子郵件必須在那里,但不是。 此處,客戶端代碼面臨無效的應用程序狀態/損壞的用戶。
這很簡單:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.