在 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)