小编Ada*_*lík的帖子

使用 Spring boot + WebFlux 进行全局错误处理

在 Spring boot Rest 控制器中使用响应式编程时,我们如何全局处理异常?

我认为这@ControllerAdvice行不通,因为我已经尝试过但没有成功。

目前我的另一个尝试是这个选项,使用自定义属性:

@Component
public class OsvcErrorAttributes extends DefaultErrorAttributes {
    public OsvcErrorAttributes() {
        super(true);
    }

    @Override
    public Map<String, Object> getErrorAttributes(ServerRequest request, boolean includeStackTrace) {
        return assembleError(request);
    }

    private Map<String, Object> assembleError(ServerRequest request) {
        ServerException serverException = (ServerException)getError(request);

        Map<String, Object> errorAttributes = new HashMap<>();
        errorAttributes.put("message", serverException.getMessage());
        errorAttributes.put("errors", serverException.getErrorMap());
        return errorAttributes;
    }
}
Run Code Online (Sandbox Code Playgroud)

和 WebExceptionHandler 像这样:

@Component
@Order(-2)
public class OsvcErrorHandler extends AbstractErrorWebExceptionHandler {
    public OsvcErrorHandler(ErrorAttributes errorAttributes,
                            ResourceProperties resourceProperties,
                            ApplicationContext applicationContext) {
        super(errorAttributes, resourceProperties, applicationContext);

        // …
Run Code Online (Sandbox Code Playgroud)

exception spring-boot project-reactor spring-webflux

6
推荐指数
1
解决办法
1万
查看次数