Vertx:如何在失败处理程序中获取 fail() 状态代码?

cze*_*rny 3 error-handling vert.x

如何RoutingContext.fail(int)在失败处理程序中检索传递的状态代码(使用 注册Route.failureHandler)?

一些航线的例如如果处理时间过长,可以通过中断TimeoutHandler的呼叫fail(408)RoutingContextfail方法随后调用失败处理程序(如果已注册)。但是我找不到任何方法(除了反射和取决于实现)如何在处理程序本身中找出它被调用的原因:

  • RoutingContext.failure() 返回 null
  • 状态码似乎只在 的私有字段中设置RoutingContextImpl,尚未在HttpServerResponse

小智 5

不确定 Vert.x 的旧版本,但从 3.0.0 开始:

eventBus.send("some.address", "some value", event -> {
  if (event.succeeded()) {
    System.out.println("Received reply: " + event.result().body());
  } else {
    ReplyException cause = (ReplyException) event.cause();
    String failMessage = cause.getMessage();
    int failCode = cause.failureCode();
  }
});
Run Code Online (Sandbox Code Playgroud)