写点什么

Java 8 开始新增的 Optional 类 - Optional 对象中的异常

作者:HoneyMoose
  • 2022 年 5 月 17 日
  • 本文字数:497 字

    阅读完需:约 2 分钟

使用 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

用户头像

HoneyMoose

关注

还未添加个人签名 2021.03.06 加入

还未添加个人简介

评论

发布
暂无评论
Java 8 开始新增的 Optional 类 - Optional 对象中的异常_HoneyMoose_InfoQ写作社区