嘿,我的班级就是这样写的:
public void setId(String id) { ...
if (id.matches("[a-zA-Z]{3}-\\d{4}")) {
this.id = id;
} else { // id is invalid: exception occurs
throw new IllegalArgumentException("Inventory ID must be in the "
+ "form of ABC-1234");
}
}
然后在我的主程序中我做了这个:
while (idLoopTrigger == true) {
try {
System.out.println("Please enter id: ");
id = in.nextLine();
if (id.matches("[a-zA-Z]{3}-\\d{4}")) {
idLoopTrigger = false;
}
} catch (Exception ex) {
//print this error message out
System.out.println(ex.getMessage());
}
}
因此它会循环,直到用户输入正确的信息,但它不会显示我班级的异常消息。想法?
答案 0 :(得分:1)
您似乎正在使用setId()
中的main()
方法的内容来近似而不是调用它。
我不确定这个setId()
方法应该存在哪个位置,但假设它与您的main()
在同一个类中定义:
while (idLoopTrigger == true) {
try {
System.out.println("Please enter id: ");
id = in.nextLine();
setId(id);
idLoopTrigger = false;
} catch (Exception ex) {
//print this error message out
System.out.println(ex.getMessage());
}
}
这似乎至少接近你正在寻找的东西。