gpt4 book ai didi

java - 自定义异常仅在 try/catch block 中调用时打印出 null

转载 作者:行者123 更新时间:2023-11-29 08:36:31 24 4
gpt4 key购买 nike

我创建了自己的异常并用一个类进行了测试。当我尝试将它与 try/catch block 一起使用时,它只打印出“null”,我不知道为什么。即使当我在构造函数 PersonException() 中放置一条消息作为参数打印出来时也是如此。

public static void main(String[] args) {
try {
Person pers1= addPerson("BOBfffffffffffffffffffffffff", 666);
System.out.println(pers1.toString());
} catch (PersonException e) {
System.out.println(e.getMessage());
}
}

private static Person addPerson(String name, int age) {
Person p= null;

p= new Person(name,age);
if(name.length()>20){
throw new PersonException("ERROR!! name too long", p);
}/*if(age<1 || age>110){
throw new PersonException("ERROR!!!! invalid age", p);
}*/

return p;
}

PersonException 类

public class PersonException extends IllegalArgumentException {
/**
*
*/
private static final long serialVersionUID = 1L;
private String message;
private Object object;

public PersonException(String message, Object object) {
super(message);
this.object = object;
}

public Object getObject() {return object;}

public void setObject(Object object) {this.object = object;}

public String getMessage() {return message;}

public void setMessage(String message) {this.message = message;}

}

类(class)人物

public class Person {
private String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public String getName() {return name;}

public void setName(String name) {this.name = name;}

public int getAge() {return age;}

public void setAge(int age) {this.age = age;}

public String toString() {return "Person [name=" + name + ", age=" + age + "]";}

}

我得到的输出

null

最佳答案

在 PersonException 构造函数上,您将消息传递给父类(super class)构造函数,而不是分配给 PersonException 消息字段,因此该字段值为空。但是在打印它时,您将获得 PersonException 消息字段的值,该字段按预期打印 null 。更正一下

  1. 您应该在 PersonException 中没有消息字段并使用父类(super class) getMessage() 方法,并且不需要 PersonException 类中的 getter 和 setter。这是推荐的方法。
  2. 或者您应该将消息分配给 PersonException 消息字段并使用 getter 检索它。

关于java - 自定义异常仅在 try/catch block 中调用时打印出 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43713596/

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