Java 从forEach循环内部传播异常 public controllerMethod()引发不受支持的编码异常{ 获取车辆(req); } 公共列表getVehicles(A请求)引发不支持的DencodingException{ someObject.forEach(obj->{ getVehicles2(req);//尝试捕获解析,但为什么抛出无法处理此问题? } } public getVehicles2(A请求)引发不支持的编码异常{ }

Java 从forEach循环内部传播异常 public controllerMethod()引发不受支持的编码异常{ 获取车辆(req); } 公共列表getVehicles(A请求)引发不支持的DencodingException{ someObject.forEach(obj->{ getVehicles2(req);//尝试捕获解析,但为什么抛出无法处理此问题? } } public getVehicles2(A请求)引发不支持的编码异常{ },java,exception,unhandled-exception,throws,Java,Exception,Unhandled Exception,Throws,我正在尝试调用getVehicles2()来自getVehicles。编译器抱怨这样做时存在未处理的异常。不使用throws声明异常不足以将其传播到父控制器方法。Try/catch可以解决错误,但我认为声明throws会将相关错误传播到调用方法。检查签名如果将lambda表达式展开为匿名类,则会得到: public controllerMethod() throws UnsupportedEncodingException { getVehicles(req); } public List

我正在尝试调用getVehicles2()来自getVehicles。编译器抱怨这样做时存在未处理的异常。不使用throws声明异常不足以将其传播到父控制器方法。Try/catch可以解决错误,但我认为声明throws会将相关错误传播到调用方法。

检查签名如果将lambda表达式展开为匿名类,则会得到:

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{

}
new ArrayList().forEach(new Consumer()){
@凌驾
公共无效接受(对象obj){
getVehicles2(需要);
}
}

如您所见,foreach接收到一个使用者,其accept方法没有您需要的“throws UnsupportedEncodingException”。

我觉得这很好;编译器不应该抱怨。@mrod抱歉更改了问题。该调用在foreach循环中,这就是为什么它不能在顶部使用throws
new ArrayList<>().forEach(new Consumer<Object>() {
    @Override
    public void accept(Object obj) {
        getVehicles2(req);
    }
}