抛出异常并将其捕获到别处

时间:2013-01-22 19:52:02

标签: java exception

我想知道是否可以编写一个抛出异常的方法,并让另一个方法捕获这些异常。

例如,

public static void checkCircle() {
    try {
        checkPixel(a);
        checkPixel(b);
        checkPixel(c);
    } catch (MyException e) {
        System.out.println("not circle");
    } 

    private static void checkPixel(anything) {
        if (img.getRGB(xValue, yValue) != pOrigColour) {
            throw new MyException();
        }
    }

    class MyException extends Exception {
        public MyException() {
        }

        public MyException(String msg) {
            super(msg);
        }
    }

我希望用checkPixel方法抛出MyException,表示没有圆圈,无论其他来电的结果如何。

1 个答案:

答案 0 :(得分:8)

是的,有可能。在方法声明中,您可以添加throws子句,该子句指示您的方法可能会抛出异常。

在您的情况下,您应该像这样修改方法声明:

private static void checkPixel(anything) throws MyException {
    // ...
}

您应该注意,异常应该用于......例外情况。使用它们进行简单的错误处理是非常不寻常的,并且会给类的用户增加不必要的负担。在您的情况下,如果在提供的位置有一个圆圈,您可能需要添加boolean hasCircleAtLocation ()方法,该方法将返回true