feiniaojin / graceful-response

Spring Boot接口响应处理解决方案,提供统一返回值封装、全局异常处理、自定义异常错误码、参数校验增强、断言增强等功能
https://doc.feiniaojin.com
MIT License
1.09k stars 164 forks source link

关于自定义异常处理的一个疑问 #11

Closed huguangquan closed 1 year ago

huguangquan commented 1 year ago

@ExceptionMapper(code = 1007, msg = "有内鬼,终止交易") public static final class RatException extends RuntimeException {}

文档中给出的示例如上,一种自定义异常只能返回相同的错误提示msg。但是在实际开发中会遇到自定义异常公用,但是msg不同的场景,对于此种场景该如何实现呢?

feiniaojin commented 1 year ago

您好,感谢提问。

对于公共异常的场景,其实关注点已经不是在关注抛什么异常了,否则不会抛一个公共的异常。此时可以使用2.1以上的版本。

<dependency>
    <groupId>com.feiniaojin</groupId>
    <artifactId>graceful-response</artifactId>
    <version>2.1</version>
</dependency>

2.1以上的版本,提供GracefulResponseException和工具类GracefulResponse,可以使用

GracefulResponse.raiseException("自定义的错误码", "自定义的错误信息");

详细见README文档3.5

另外我们要知道,通用异常不是好的设计,一个业务异常应该对应唯一确定的错误码和错误信息,并且只在一个特定的限界上下内有效。举个例子,订单和商品,都应该有自己的一套异常体系,跨上下文的使用通用异常,实际上是代码共享、领域逻辑的泄漏。