Java 8 開始新增的 Optional 類 - Optional 物件中的異常
阿新 • • 發佈:2022-05-17
使用 orElseThrow() 處理異常
在 orElse() 和 orElseGet() 方法之外,JDK 還添加了一個 orElseThrow() 方法,JDK 使用這個方法來處理物件為空的情況。
如果 Optional 的物件為 null 的話,orElse() 和 orElseGet() 是返回一個預設值,我們可以使用 orElseThrow() 來丟擲一個異常。
考察下面的程式碼,在 Optional 為空的時候,異常是如何丟擲的。
@Test(expected = IllegalArgumentException.class)
public void whenOrElseThrowWorks_thenCorrect() {
String nullName = null;
String name = Optional.ofNullable(nullName).orElseThrow(
IllegalArgumentException::new);
}
這個異常處理方法是從 Java 8 開始提供的,可以通過在構造來傳入異常。
Java 10 以後,還推出了一個更加簡單的沒有引數的 orElseThrow() 版本的方法。
這樣的話,如果 Optional 物件為空的話,我們可以丟擲一個 NoSuchElementException 異常:
@Test(expected = NoSuchElementException.class)
public void whenNoArgOrElseThrowWorks_thenCorrect() {
String nullName = null;
String name = Optional.ofNullable(nullName).orElseThrow();
}