嗨,我应该为学校制作一个Java程序,而且我一直在创建一个抛出自定义异常的函数。
public class ParkingSpace implements ParkingPlace {
private Automobile P_Car;
public void placeCar(Car car) throws NoFreePlaceException{
if(this.P_Car == null) {
throw new NoFreePlaceException(car);
}
this.P_Car = (Automobile) car;
}
}
自定义例外:
public class NoFreePlaceException extends Exception {
/**
*
*/
private static final long serialVersionUID = 1L;
public NoFreePlaceException() {
super("There is no free place for the current car");
}
public NoFreePlaceException(Car car) {
super ("There is no free place for the current car with plate number: " + car.getLicensePlateNumber());
}
}
但是我总是在尝试输入错误时遇到错误。
异常NoFreePlaceException与ParkingPlace.placeCar(Car)ParkingSpace.java中的throws子句不兼容
/ NOS_LB2 / src / at / fhsalzburg / its / nos / parksim第41行 Java问题
根据我的教授的说法,我应该像这样实施。我非常精通C ++,但对Java来说仍然相对较新。
答案 0 :(得分:2)
此错误是由于重写方法的签名与接口中的方法不匹配。
只需修改placeCar()
界面中的ParkingPlace
方法,如下所示:
void placeCar(Car car) throws NoFreePlaceException
答案 1 :(得分:1)
请检查您的界面来源。这些实现只允许抛出更具体的异常。在你的情况下,我相信你需要的是
interface ParkingPlace {
// here it could also be throws Exception
// but that is considered a bad practice
void placeCar(Car car) throws NoFreePlaceException;
}
抛出异常(而不是特定的异常)是一种不好的做法,因为它们还涵盖了各种运行时错误(未经检查的异常),在大多数情况下,这些错误不应在业务逻辑代码中处理。一般来说,我强烈建议阅读Java中的异常,因为它是最重要的主题之一。