不允许抛出检查异常,因为接口中的
accept(T t, Uu)方法
java.util.function.BiConsumer<T,U>未在其
throws子句中声明任何异常。而且,如您所知,
Map#forEach采用这种类型。
public interface Map<K, V> { default void forEach(BiConsumer<? super K, ? super V> action) { ... }} | | V@FunctionalInterfacepublic interface BiConsumer<T, U> { void accept(T t, U u); // <-- does throw nothing}当我们谈论被检查的异常时,这是正确的。但是您仍然可以抛出未经检查的异常(例如
java.lang.IllegalArgumentException):
new HashMap<String, String>() .forEach((a, b) -> { throw new IllegalArgumentException(); });


