如何尝试...捕获假异常和 return 只有状态代码和错误消息
how to try...catch a feign exception and return only the status code and the erro message
我正在处理 SpringBootApplication。在这个应用程序中,我有 4 个微服务使用 Feign 在彼此之间进行通信。在控制器中,我有一段如下所示的代码,用于捕获异常并将其 return 显示在视图中,以防出现问题。
try {
patientDTO = patientProxyFeign.getPatientById(id);
noteDTOList = historyProxyFeign.getAll(id);
assessmentDTO = assessmentProxyFeign.getPatientAssessment(id);
} catch (Exception e) {
log.error("" + e.getMessage());
model.addAttribute("errorMsg", e.toString());
return "error/error";
}
如果出现异常,我会向视图发送这样的消息:
feign.FeignException$NotFound: [404] during [GET] to [http://localhost:8081/patient/12000] [PatientProxyFeign#getPatientById(Integer)]: [{"timestamp":"2021-12-16T16:21:27.790+00:00","status":404,"error":"Not Found","path":"/patient/12000"}]
我想做的是仅获取状态代码和消息“未找到”。
有人知道怎么做吗? (在 google 上搜索,但似乎太具体了。我可能没有使用正确的关键字。)
您可以通过调用 e.status()
获取状态,然后您可以 switch
-case
状态并根据该状态获取消息。您还可以构建 <Integer, String>
的 Map
并按状态获取消息。要更详细地了解 FeignException,请访问 https://github.com/OpenFeign/feign/blob/master/core/src/main/java/feign/FeignException.java
强烈建议您具体说明您要做什么 catch
:
} catch (FeignException e) {
我正在处理 SpringBootApplication。在这个应用程序中,我有 4 个微服务使用 Feign 在彼此之间进行通信。在控制器中,我有一段如下所示的代码,用于捕获异常并将其 return 显示在视图中,以防出现问题。
try {
patientDTO = patientProxyFeign.getPatientById(id);
noteDTOList = historyProxyFeign.getAll(id);
assessmentDTO = assessmentProxyFeign.getPatientAssessment(id);
} catch (Exception e) {
log.error("" + e.getMessage());
model.addAttribute("errorMsg", e.toString());
return "error/error";
}
如果出现异常,我会向视图发送这样的消息:
feign.FeignException$NotFound: [404] during [GET] to [http://localhost:8081/patient/12000] [PatientProxyFeign#getPatientById(Integer)]: [{"timestamp":"2021-12-16T16:21:27.790+00:00","status":404,"error":"Not Found","path":"/patient/12000"}]
我想做的是仅获取状态代码和消息“未找到”。
有人知道怎么做吗? (在 google 上搜索,但似乎太具体了。我可能没有使用正确的关键字。)
您可以通过调用 e.status()
获取状态,然后您可以 switch
-case
状态并根据该状态获取消息。您还可以构建 <Integer, String>
的 Map
并按状态获取消息。要更详细地了解 FeignException,请访问 https://github.com/OpenFeign/feign/blob/master/core/src/main/java/feign/FeignException.java
强烈建议您具体说明您要做什么 catch
:
} catch (FeignException e) {