InvalidPositionException

InvalidPositionException

假设我有一个方法“ position”,该方法接受2个坐标并创建一个位置对象以将其保持在其中。为确保这些坐标不超出范围,将引发InvalidPositionException。

public Position(int x, int y) throws InvalidPositionException {
    try {
        if (x > 10 || x < 1 || y>10 || y<1) {
            throw new InvalidPositionException("Position x = "+x+", y = "+y+" is out of bounds");
        } else {
            setX(x);
            setY(y);
        }
    } catch (InvalidPositionException e) {
        System.err.println(e);
    }
}


如果现在我想从另一个类创建新的位置对象,则会收到错误消息“未报告的异常InvalidPositionException;必须捕获或声明为抛出”

如何在不创建新位置对象的方法的方法签名中声明“抛出”的情况下进行这项工作?

最佳答案

转到类InvalidPositionException,并使其继承自RuntimeException

RuntimeException是未经检查的异常,这意味着编译器不会强迫您处理它们。当您超出数组范围时,这就是一个很好的例子。您不必每次访问数组时都需要编写处理此问题的代码(例如我们处理IOException的方式)。类似的示例是NullPointerException。但是,在两种情况下,您都可以编写代码来捕获异常并对其进行处理。

如果您是检查异常的纯粹主义者并且不想使用try-catch块,则解决该问题的另一种方法是在输入数据的任何屏幕中清理数据,并说该数据超出了该范围。

10-05 22:45
查看更多