尝试/捕获不显示异常错误消息

时间:2016-05-17 23:12:54

标签: java oop try-catch illegalargumentexception

嘿,我的班级就是这样写的:

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());

        }

    }

因此它会循环,直到用户输入正确的信息,但它不会显示我班级的异常消息。想法?

1 个答案:

答案 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());
    }

}

这似乎至少接近你正在寻找的东西。