构造函数不抛出新的异常?

时间:2017-02-01 07:17:45

标签: java exception constructor

为什么这段代码不会抛出异常?尝试了很多东西,但是当我用这样的JUnit类测试它时,它不会抛出异常:

Vehicle e = new Vehicle('C', 'G', "A1234");
// Constructor
public Vehicle(char kType, char dType, String regNr) {
    String temp0 = regNr.substring(0, 2);
    String temp = regNr.substring(2);
    boolean finish = false;

    if ("" + kType == "C") {
        for (char c : temp0.toCharArray()) {
            if (Character.isDigit(c)) {
                throw new IllegalArgumentException("3");
            }
        }

        if (temp.length() == 5) {
            finish = true;
        } else {
            finish = false;
            throw new IllegalArgumentException("4");
        }

        try {
            Integer.parseInt(temp);
        } catch (NumberFormatException nfe) {
            finish = false;
            throw new IllegalArgumentException("5");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

不会。

if(""+kType=="C"){

该代码总是会给你错误。

您(几乎)从不使用==比较字符串;你必须使用equals()方法。当然,当你真的输入if块时,会有各种条件导致抛出那些IllegalArgumentExceptions。