1. 程式人生 > 其它 >Java 8 開始新增的 Optional 類 - Optional 物件中的異常

Java 8 開始新增的 Optional 類 - Optional 物件中的異常

使用 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();
    }

https://www.ossez.com/t/java-8-optional-optional/13968