1
私自身の例外を作成し、クラスでテストしました。私がtry/catchブロックでそれを使用しようとすると、 "null"が出力されるだけで、理由はわかりません。コンストラクタのパラメータとしてメッセージを出力しても、PersonException()
。カスタム例外は、try/catchブロックで呼び出されたときにnullを出力します。
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;}
}
クラスの人
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 + "]";}
}
私はあなたがスーパーにメッセージを渡しているPersonExceptionコンストラクタで
null
私はそれがJavaだと知っていますが、あなたが名前を設定し、それらを得る方法は間違っているかもしれませんか? SET(コンストラクタなど)this.name = name; GET:名前を返します。例外メッセージのための同じ ... は、私はあなたがあなた自身の規則に従うべきだと思うとゲッターのために好きですか: 戻りthis.nameを。 –
hmmm、私はそれが命名プロセスと関係しているとは思わない........ –