vertx RecordParser异常处理

时间:2018-10-10 07:59:15

标签: java vert.x

我在Vertx中使用NetServer,并且在连接新客户端时,会创建一个可流动的流,以发送在该NetClient上接收到的数据包。为了弄清楚如何进行适当的异常处理,我在流程中添加了一些随机异常:

private RecordParser createParser(NetState state, FlowableEmitter<Buffer> emitter) {
    RecordParser parser = RecordParser.newFixed(4);
    parser.handler(buffer -> {
        if(Math.random() > 0.8) {
            logger.error("I am dying now");
            throw new RuntimeException();
        }

        // protocol handling
    }).exceptionHandler((throwable) -> {
        logger.error("Got an exception: ", throwable);
        emitter.onError(throwable);
    });
    return parser;
}

我这样使用:

NetState state = new NetState();
// client -> NetClient
return Flowable.create(emitter -> client.handler(createParser(state, emitter)), BackpressureStrategy.ERROR);

现在的问题是,记录解析器中抛出的异常从未到达任何异常处理程序。 RecordParser本身之一和我附加到client的那个都没有。它全部取决于根上下文。如何捕获记录解析期间发生的异常(例如,以关闭发送无效数据的客户端)

0 个答案:

没有答案