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

Joh*_*ith 0 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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

事情是我想要checkPixel抛出一个方法MyException,表明没有圆圈,无论其他调用的结果如何.

Laf*_*ica 8

对的,这是可能的.在方法声明中,您可以添加一个throws子句,指示您的方法可能抛出异常.

在您的情况下,您应该修改您的方法声明,如下所示:

private static void checkPixel(anything) throws MyException {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

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