IllegalPositionException

IllegalPositionException

嗨,我下面的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

10-08 16:48