在RxJava 2中映射异常

时间:2017-08-25 16:04:51

标签: java exception-handling reactive-programming rx-java2

如何在RxJava2中将一个发生的异常映射到另一个异常? 例如:

doOnError(throwable -> {
    if (throwable instanceof FooException) {
        throw new BarException();
    }
})

在这种情况下,我终于收到了由CompositeExceptionFooException组成的BarException,但我希望只收到BarException。救命!

1 个答案:

答案 0 :(得分:4)

您可以使用onErrorResumeNext并从中返回Observable.error():

public void Connect(int port)
{
    Socket server = 
        new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    server.Bind(new IPEndPoint(IPAddress.Any, port));

    server.Listen(100);

    while (true)
    {
        Socket clientSocket = server.Accept();
    }
}

修改

此测试通过我:

source.onErrorResumeNext(e -> Observable.error(new BarException()))