我在以下代码中使用了lambda表达式,但是即使该方法引发了一个已检查的异常,Eclipse也不要求我用try,catch块包装调用。为什么?

package lambda;

//Throw an exception from a lambda expression.

interface DoubleNumericArrayFunc {
    double func(double[] n) throws EmptyArrayException;
}

class EmptyArrayException extends Exception { // Checked exception
}

public class LambdaExceptionDemo {

    public static void main(String args[]) throws EmptyArrayException {

        DoubleNumericArrayFunc average = (n) -> {
            if (true)
                throw new EmptyArrayException();
            return 1;
        };


        // Why try catch isn't required here?
        System.out.println("The average is " + average.func(new double[0]));
    }

}

最佳答案

public static void main(String args[]) throws EmptyArrayException {


因为您在throws上有一个main()子句。允许传播该异常,因此不需要捕获它。删除throws,您将需要添加一个try / catch。

09-25 22:04
查看更多