嗨,我下面的Crane类代码:
public class Crane {
protected int position;
public static final int MIN_POSITION = 0;
public static final int MAX_POSITION = 10;
public Crane(){
this.position = MIN_POSITION;
}
public int getPosition(){
return this.position;
}
public void setPosition(int newPosition){
this.position = newPosition;
}
public void move(int distance){
int endPosition = this.position + distance;
this.setPosition(endPosition);
}
}
我需要重写move方法,以在“适当的地方”抛出一个非法的PositionException。
我想到添加:
if ((0 > endPosition) || (10 < endPosition)
throw new IllegalPositionException("...");
end
不太确定这是否可行,或者是否需要使用try-catch块。
同样值得注意的是,必须单独定义和创建IllegalPositionException。
谢谢
最佳答案
IllegalPositionException
可以这样抛出:
(假设:distance
参数可以为负。)
public void move(int distance) {
int endPosition = this.position + distance;
if (MIN_POSITION > endPosition || MAX_POSITION < endPosition) {
throw new IllegalPositionException("Invalid end position: " + endPosition + " when moved by " + distance);
}
this.setPosition(endPosition);
}
当从方法中引发异常时,在该方法本身中捕获该异常是没有意义的。引发异常以在更高级别上捕获和处理。
如果
IllegalPositionException
是一个已检查的异常,则必须将throws IllegalPositionException
添加到方法签名中,如下所示:public void move(int distance) throws IllegalPositionException