Java 8 的 Optional 类抛异常
Java 8 的 Optional 类抛异常
本文我们介绍当Optional类为空时如何抛自定义异常。
Optional.orElseThrow
简单描述,如果Optional值存在,则isPresent方法返回true,然后调用get方法返回该值。否则抛出NoSuchElementException异常。
orElseThrow(Supplier
示例实战
假设我们有一个方法返回可能为空的结果:
public String findNameById(String id) {return id == null ? null : "example-name";
}
现在我们打算两次调用findNameById(String id) 方法,并通过ofNullable(T value)方法包装结果。
Optional 提供了静态工厂方法ofNullable(T value)创建实例,然后我们在调用 orElseThrow方法。
通过测试验证结果:
@Test
public void whenIdIsNull_thenExceptionIsThrown() {assertThrows(InvalidArgumentException.class, () -> Optional.ofNullable(personRepository.findNameById(null)).orElseThrow(InvalidArgumentException::new));
}
上述代码findNameById返回null. 所以orElseThrow方法抛出 InvalidArgumentException 异常。
下面使用非空参数调用该方法,则不会获得InvalidArgumentException 异常。
@Test
public void whenIdIsNonNull_thenNoExceptionIsThrown() {assertAll(() -> Optional.ofNullable(personRepository.findNameById("id")).orElseThrow(RuntimeException::new));
}
总结
本文我们介绍了 Java 8 Optional 如何抛自定义异常。
Java 8 的 Optional 类抛异常相关推荐
- java基础之Object类和异常
Object类和异常 1. Object类是所有类的父类(超类, 基类,上帝类); 里面有两个常用的方法: 1> public String toString();// 默认输出对象的地址值的字 ...
- java 代码段 执行超时 抛异常_Java 并发队列详解TransferQueue、BlockingQueue、BlockingDeque
阻塞队列 BlockingQueue java.util.concurrent 包里的 BlockingQueue 接口表示一个线程安放入和提取实例的队列. BlockingQueue 用法 Bloc ...
- java打印的globa类l_Spring异常集中处理和日志集中打印
使用@ControllerAdvice和@ExceptionHandler处理Controller层的异常: @ControllerAdvice public class GlobalExceptio ...
- java enhancer_执行trace命令抛异常,Enhancer error,java.lang.ClassFormatError: null
我也有同样的问题. arthas version 3.4.5 腾讯云环境:CentOS Linux release 7.9.2009 (Core) java version "1.8.0_2 ...
- 如何正确的使用Java8中的Optional类来消除代码中的null检查
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:一书生VOID lw900925.github.io/jav ...
- flatmap 与map 的区别 java_map和flatmap的区别+理解、学习与使用 Java 中的 Optional
orElse() 和 orElseGet()的不同之处 乍一看,这两种方法似乎起着同样的作用.然而事实并非如此.我们创建一些示例来突出二者行为上的异同. 我们先来看看对象为空时他们的行为: @Test ...
- 使用Optional类来消除代码中的null检查
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨一书生VOID lw900925.github ...
- 使用Java8中的Optional类来消除代码中的null检查
作者:一书生VOID lw900925.github.io/java/java8-optional.html Optional类是Java 8新增的一个类,用以解决程序中常见的NullPointe ...
- Java 8 Optional 类
Java 8 Optional 类 Java 8 新特性 Optional 类是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. ...
最新文章
- 产生所有排列---旋转法------2013年1月22日
- 特斯拉炫技现场:电驴、行人、快递车,中国的小路难不倒Autopilot自动驾驶
- 一天搞定CSS: 清除浮动(float)--13
- Android -- 带你从源码角度领悟Dagger2入门到放弃(一)
- android p wifi一直在扫描_在Android上的每次WiFi扫描之间我应该使用什么时间间隔?...
- 如何在Go中使用切片容量和长度
- showModalDialog模态对话框的使用以及浏览器兼容
- Pandas 的轴向连接 concat
- 对抗生成网络(Generative Adversarial Network, GAN)
- 一位辅导员写给毕业生的一封信
- 安卓下使用TTS语音包:小爱
- 3dmax中如何设置环境灯光
- 怎样压缩图片大小到20k?教你一键压缩图片大小
- 2018杭州云栖大会参会总结
- 支付宝php40247,支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247
- 【Pandas】根据某列分组求和
- i5 10400f和i5 11400f参数对比 哪个更好
- 在地址栏上输入一个url,到这个页面呈现出来,中间会发生什么?
- MySQL安装 忘记密码
- 2022年四川省安管人员报名即将结束!C证报名11月9日截止!