有没有办法合并多个单声道错误信号?

Posted

技术标签:

【中文标题】有没有办法合并多个单声道错误信号?【英文标题】:Is there a way to merge multiple mono error signals? 【发布时间】:2020-09-15 17:15:09 【问题描述】:

有没有办法合并多个错误信号?例如:

    return Mono.zipDelayError(
        monoOne(), //throws ValidationException with list of validation details 1
        monoTwo(),
        monoThree() //throws ValidationException with list of validation details 2
    )
    .then();

因此,我想返回 ValidationException 和合并的验证详细信息列表

【问题讨论】:

【参考方案1】:

您可以使用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() 仍然适用于异常不是倍数的情况 - 在这种情况下,您只会得到一个单例列表。

【讨论】:

以上是关于有没有办法合并多个单声道错误信号?的主要内容,如果未能解决你的问题,请参考以下文章

连接到安装了单声道的 Informix DB 时出现 ODBC 错误

ALSA & Python - 捕获多个单声道音频输入

是否可以在不重新编码的情况下将立体声合并/缩混为单声道(m4a 或 opus)

音频处理

mp3单声道怎么转立体声

如何在平板电脑/智能手机上启用立体声录音,尽管有两个内置麦克风,但只产生单声道?