gpt4 book ai didi

java - spring boot 生产级异常处理

转载 作者:行者123 更新时间:2023-11-29 04:21:02 25 4
gpt4 key购买 nike

我有一个场景:

            UI<--->Spring boot micro-service REST API<--->server

现在,有一种情况我想处理自定义异常(我知道该怎么做)以便在服务器以某种方式响应时将特定的 Http 状态和消息返回给 UI,例如500 应该返回“请稍后返回”而不是“内部服务器错误”。我们微服务的 Maven 项目分为 3 层(子 Maven 项目),即业务、Web 和域。其中 web 包含 Controller 类,业务包含服务类,域包含@Entity、@Components 等。

我想知道为了处理上面提到的异常,比如 HTTP Status 500,应该在业务层完成吗?或在网络层,即 Controller 级别。最好的解决方案是什么? (我知道 ResponseEntity 以及它如何提供对 UI 的自定义响应)。

我个人认为,如果我在业务级别包含自定义异常类并在检查响应状态后使用响应实体将其返回到 Controller 类中,就可以解决问题。但是官方觉得应该在服务层面做?我不明白为什么(这使过程更加复杂)?谁能建议哪种解决方案最好?

最佳答案

官方说的对,应该在Service层。我会说最佳实践是使用@ExceptionHandler。由于在 Controller 方法中处理异常的缺点是它会降低代码的可读性,并且可能会在许多 Controller 方法中重复出现。

我建议为您的 Controller 创建一个定义了@ExceptionHandler 的基类。这样它就可以用于许多不同的 Controller ,而无需任何代码重复。这将比异常解析器方法更具可读性,但可以结合使用这个解释的很清楚here

关于java - spring boot 生产级异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49177111/

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