gpt4 book ai didi

java - 已处理的 Java 异常导致未处理的异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:17 24 4
gpt4 key购买 nike

public List<OpBase> getHistory(ESRequest historyRequest)
throws IOException, ResourceNotFoundException, URISyntaxException {
String url = baseUrl + opIndex + "/_search";
String resp = makeESQuery(historyRequest, url);
HistoryResponse historyResponse = objectMapper.readValue(resp, HistoryResponse.class);
List<OpBase> returnMsgList = new ArrayList<>();
historyResponse.tasks.tasks.forEach(editTaskMsgResponse -> {
Map<String, Object> msgObject = editTaskMsgResponse.source.msg;
String taskType = (String) msgObject.get("task_type");
EditTaskType editTaskType = EditTaskType.valueOf(taskType);
switch(editTaskType) {
case MIGRATE_PLACE: returnMsgList.add(objectMapper.readValue(
objectMapper.writeValueAsString(msgObject), MatchingTaskOperatorMetricsMsg.class));
case CURATE_PLACE:
case QC_PLACE: returnMsgList.add(objectMapper.readValue(objectMapper.writeValueAsString(msgObject),
MatchingTaskOperatorMetricsMsg.class));
}
});
return returnMsgList;
}

我收到一个未处理的 IOException 异常错误,其中包含类似 objectMapper.readValue(objectMapper.writeValueAsString(msgObject),
MatchingTaskOperatorMetricsMsg.class));

但是我明确的说这个方法会抛出这个异常?

最佳答案

此警告可能会与包含在 switch-case 语句中的行一起显示。放在它外面的那个可以正常工作。

原因是因为该代码在 lambda 表达式中。在流和 lambda 表达式中,未处理的异常不会以这种方式处理。

您必须将编写在 lambda 表达式中的代码包装在 try-catch

historyResponse.tasks.tasks.forEach(editTaskMsgResponse -> {
Map<String, Object> msgObject = editTaskMsgResponse.source.msg;
String taskType = (String) msgObject.get("task_type");
EditTaskType editTaskType = EditTaskType.valueOf(taskType);
switch(editTaskType) {
case MIGRATE_PLACE:
try {
returnMsgList.add(objectMapper.readValue(objectMapper.writeValueAsString(msgObject), MatchingTaskOperatorMetricsMsg.class));
}
catch(IOException io) {}
case CURATE_PLACE:
case QC_PLACE:
try {
returnMsgList.add(objectMapper.readValue(objectMapper.writeValueAsString(msgObject), MatchingTaskOperatorMetricsMsg.class));
}
catch(IOException io) {}
}
});

另见:

  1. Java 8 method reference unhandled exception
  2. Java 8: How do I work with exception throwing methods in streams?

关于java - 已处理的 Java 异常导致未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523575/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com