gpt4 book ai didi

java.lang.NullPointerException 显示有关父对象和空对象的附加信息

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:41 25 4
gpt4 key购买 nike

public class ExampleNullPointer {
public static void main(String[] args) {
try {
getEmployee().getDept().getLocation().getContactPerson();
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}

输出

java.lang.NullPointerException
at com.india.test.ExampleNullPointer.main(ExampleNullPointer.java:7)

查看上面的代码及其输出,当 java 抛出 java.lang.NullPointerException 时,我们是否可以包装此 NullPointerException 以显示其他信息,例如 which Object是null,还是父对象的一些信息,比如父对象的name属性?

我主要是在寻找父对象的属性值,例如 Dept 是 null 所以如果我可以通过覆盖 toString() 方法来记录员工的主键或员工的姓名。

无论如何,我是否可以进行一般性更改以获取这些信息,以便每当程序抛出 NullPointerException 时,我都会获得这些附加信息,这将帮助我轻松识别问题和导致问题的数据?

最佳答案

NullPointerException 不应是正常应用程序逻辑的一部分。抛出它只是为了发现代码中的错误。如果您编写 getEmployee().getDept().getLocation().getContactPerson(),您应该绝对确定员工、部门、位置存在。因此,您可以像这样修改您的方法:

public Employee getEmployee() {
if(employee == null) {
// some business-level exception
throw new EmployeeAbsentException(this.toString());
}
return employee;
}

// in Employee class
public Dept getDept() {
if(dept == null) {
throw new EmployeeHasNoDeptException(this);
}
return dept;
}

等等。当然,您应该拥有自己的业务逻辑异常系统。您可以重用相同的异常类或创建多个异常类(可能是一些抽象 BusinessLogicException 的子类)。通过这种方式,您可以轻松区分正在发生的事情并向用户显示相应的消息或记录它们以调查错误。

如果您希望能够在不捕获异常的情况下检查Employee 是否存在,请添加另一个方法,如下所示:

public boolean hasEmployee() {
return employee != null;
}

关于java.lang.NullPointerException 显示有关父对象和空对象的附加信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32731437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com