抛出异常不会抛出

时间:2015-01-09 09:51:46

标签: java

我刚开始学习java。我试图了解异常处理是如何工作的,所以我编写了一个小程序:

public class Car {
    protected String type;
    protected String[] colors;
    protected boolean isAvaiable;

    public Car(String type, Collection<String> colors, boolean isAvaiable) throws NoColorException {
        if (colors == null || colors.isEmpty()) {
            throw new NoColorException("No colours!");
        } else {
            this.type = type;
            this.colors = (String[]) colors.toArray();
            this.isAvaiable = isAvaiable;
        }
    }

    public static void main(String[] args) {
        try {
            Car n = new Car("asd", new ArrayList(), true);
        } catch (NoColorException ex) {

        }
    }
}

这是我的异常类:

public class NoColorException extends Exception {
    public NoColorException(String string) {
        super(string);
    }
}

当我尝试创建对象但是它运行时,上面的代码应该抛出异常。

为什么会这样?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

您的代码会引发异常,您会在空的catch块中捕获该异常:

catch (NoColorException ex) {

}

答案 1 :(得分:4)

如果捕获到异常,您将捕获异常并且不执行任何操作:

变化:

try {
    Car n = new Car("asd", new ArrayList(), true);
} catch (NoColorException ex) {

}

要:

try {
    Car n = new Car("asd", new ArrayList(), true);
} catch (NoColorException ex) {
     System.out.println(ex.getMessage())
}

你会看到异常。

注意:Neven在没有记录的情况下捕获异常。

答案 2 :(得分:-1)

它运行清楚,因为你正在捕捉你的Empty catch中抛出的异常,如@Eran和@Jens所说。

为了看到红色文字;这是抛出异常并可视化异常流程,只需进行此更改:

public static void main(String[] args) throws NoColorException {

        Car n = new Car("asd", new ArrayList(), true);
}