Vin*_*ino 3 java exception optional
Java 8引入了OptionalAPI来表示可能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();
}
Run Code Online (Sandbox Code Playgroud)
情况2:引发检查异常
private Item getItem(String itemName) throws ItemNotFound
{
for (Item item : items)
{
if (item.getName().equals(itemName))
return item;
}
throw new ItemNotFound();
}
Run Code Online (Sandbox Code Playgroud)
正如Martin Fowler所主张的那样,Optional/特殊情况模式是一种更好的做法,但是在这种简单的情况下,抛出一个受检查的异常也可以做到。
我应该关注哪一个?
基本上可以归结为:缺少该用例是否有意义?
可以说一个应用有用户。用户可以将电话号码添加到他的帐户信息中。由于他的俯卧位号码不必存在,因此可以使用可选的。电话号码可能在那里,但可能丢失。客户端代码必须处理Optional / nullable值。
另一方面,如果我想查看他的电子邮件,则在注册时必须填写。然后例外就是要走的路。电子邮件必须在那里,但不是。此处,客户端代码面临无效的应用程序状态/损坏的用户。
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |