java - 用户通过 orElseThrow 方法定义的异常
问题描述
根据 JAVA 8 提供的新特性,可选类是一种防止空指针异常的方法。使用 orElseThrow Method() 如果输出为空,我们可以抛出异常。我想知道我们如何使用它抛出用户定义的异常
package com.wipro.java8;
import java.util.Optional;
class employee{
int id;
String name;
String adress ;
int salary;
employee(int id,String name,String adress,int salary){
this.id=id;
this.name=name;
this.adress=adress ;
this.salary=salary;
}
}
class InvalidEmployeeException extends Exception{
/**
*
*/
private static final long serialVersionUID = 1L;
int a;
InvalidEmployeeException(int b) {
a=b;
}
public String toString(){
return ("Exception Number = "+a) ;
}
}
public class oc3 {
public static void main(String[] args) {
employee e1= new employee(0, null, null, 0);
Optional<String> n = Optional.ofNullable(e1.name);
System.out.print( n.orElseThrow( InvalidEmployeeException ::new));
}
}
解决方案
如果您需要使用带参数的异常构造函数,请使用 lambda 表达式而不是方法引用。
例如:
n.orElseThrow(() -> new InvalidEmployeeException(1))
(PS我不知道int
传递给异常构造函数是什么意思,以及你如何决定传递哪个值)
推荐阅读
- java - Java中的 Long.valueOf(0) 和 0L 有什么区别?
- python - 如何让 Python 程序在遍历列表后自动打印匹配的内容
- android - 如何在android中修复“无法解析rxkotlin”
- python - 将带有列名的数据框单独附加到另一个带有数据的数据框
- reactjs - 在 redux 操作中调用作为参数传递的组件方法是错误的吗?
- android - 未在膨胀视图的 TextView 中设置文本
- java - 使用 Tosca 执行 Selenium 脚本
- ruby - 如何使用 case 语句循环遍历对象数组并向数组内的键添加值?
- apache-spark - Spark Join 数据框并有条件地更新列
- javascript - 链接承诺但具有不同的参数