如何尝试...捕获假异常和 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) {