从 forEach 循环内部传播异常
propagating Exception from inside of a forEach loop
public controllerMethod() throws UnsupportedEncodingException {
getVehicles(req);
}
public List<vehicles> getVehicles(A req) throws UnsupportedEncodingException{
someObject.forEach(obj -> {
getVehicles2(req); //try catch resolves but why wouldn't throws handle this ?
}
}
public getVehicles2(A req) throws UnsupportedEncodingException{
}
我正在尝试从 getVehicles 调用 getVehicles2()。编译器抱怨这样做有一个未处理的异常。不会用 throws 声明异常不足以将其传播到父控制器方法。 Try/catch 会解决错误,但我认为声明 throws 会将相关错误传播到调用方法。
检查消费者的签名。如果将 lambda 表达式展开为匿名 class,您将得到:
new ArrayList<>().forEach(new Consumer<Object>() {
@Override
public void accept(Object obj) {
getVehicles2(req);
}
}
如您所见,foreach 接收一个 Consumer,其 accept 方法执行没有您需要的 "throws UnsupportedEncodingException"。
public controllerMethod() throws UnsupportedEncodingException {
getVehicles(req);
}
public List<vehicles> getVehicles(A req) throws UnsupportedEncodingException{
someObject.forEach(obj -> {
getVehicles2(req); //try catch resolves but why wouldn't throws handle this ?
}
}
public getVehicles2(A req) throws UnsupportedEncodingException{
}
我正在尝试从 getVehicles 调用 getVehicles2()。编译器抱怨这样做有一个未处理的异常。不会用 throws 声明异常不足以将其传播到父控制器方法。 Try/catch 会解决错误,但我认为声明 throws 会将相关错误传播到调用方法。
检查消费者的签名。如果将 lambda 表达式展开为匿名 class,您将得到:
new ArrayList<>().forEach(new Consumer<Object>() {
@Override
public void accept(Object obj) {
getVehicles2(req);
}
}
如您所见,foreach 接收一个 Consumer,其 accept 方法执行没有您需要的 "throws UnsupportedEncodingException"。