我刚开始学习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);
}
}
当我尝试创建对象但是它运行时,上面的代码应该抛出异常。
为什么会这样?
非常感谢任何帮助。
答案 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);
}