有没有办法合并多个单声道错误信号?
Is there a way to merge multiple mono error signals?
有没有办法合并多个错误信号?例如:
return Mono.zipDelayError(
monoOne(), //throws ValidationException with list of validation details 1
monoTwo(),
monoThree() //throws ValidationException with list of validation details 2
)
.then();
}
因此我想 return ValidationException 与验证详细信息的合并列表
您可以使用 Exceptions.unwrapMultiple()
实用程序方法获取 List<Throwable>
,然后您可以将该列表缩减为单个 ValidationException
(或进行您喜欢的任何其他检查/处理.)
那么就是将上面的内容包裹在onErrorMap()
中:
Mono.zipDelayError(
Mono.error(new ValidationException("Reason 1")),
Mono.just("ok"),
Mono.error(new ValidationException("Reason 2"))
)
.onErrorMap(e ->
Exceptions.unwrapMultiple(e).stream()
.reduce((e1, e2) -> new ValidationException(String.join(", ", e1.getMessage(), e2.getMessage()))).get()
);
...给出:
Exception in thread "main" reactor.core.Exceptions$ReactiveException: ValidationException: Reason 1, Reason 2
请注意,Exceptions.unwrapMultiple()
仍然适用于异常 不是 倍数的情况 - 在这种情况下,您只会得到一个单例列表。
有没有办法合并多个错误信号?例如:
return Mono.zipDelayError(
monoOne(), //throws ValidationException with list of validation details 1
monoTwo(),
monoThree() //throws ValidationException with list of validation details 2
)
.then();
}
因此我想 return ValidationException 与验证详细信息的合并列表
您可以使用 Exceptions.unwrapMultiple()
实用程序方法获取 List<Throwable>
,然后您可以将该列表缩减为单个 ValidationException
(或进行您喜欢的任何其他检查/处理.)
那么就是将上面的内容包裹在onErrorMap()
中:
Mono.zipDelayError(
Mono.error(new ValidationException("Reason 1")),
Mono.just("ok"),
Mono.error(new ValidationException("Reason 2"))
)
.onErrorMap(e ->
Exceptions.unwrapMultiple(e).stream()
.reduce((e1, e2) -> new ValidationException(String.join(", ", e1.getMessage(), e2.getMessage()))).get()
);
...给出:
Exception in thread "main" reactor.core.Exceptions$ReactiveException: ValidationException: Reason 1, Reason 2
请注意,Exceptions.unwrapMultiple()
仍然适用于异常 不是 倍数的情况 - 在这种情况下,您只会得到一个单例列表。