Vert.X:罕见 "Unhandled exception in router" 尽管 errorHandler 的状态代码为 500

Vert.X: Rare "Unhandled exception in router" despite errorHandler with statusCode 500

我使用 errorHandler 来记录有趣的一般信息,例如用户 ID(如果可用)和 IP。这通常有效,但我很少看到我的 errorHandler 未通过的“路由器中未处理的异常”:

错误io.vertx.ext.web.RoutingContext - 路由器中未处理的异常

我的错误处理程序:

router.errorHandler(500) { ctx ->
// Logging happens.
}

来自文档: 您也可以使用状态代码 500 来管理一般错误。当上下文失败并且其他失败处理程序未写入回复或在处理程序中抛出异常时,将调用处理程序。

缺少什么?

错误处理程序不同于 exception/failure 处理程序

router.route().failureHandler(this::handleFailure)
private fun handleFailure(routingContext: RoutingContext) {
   routingContext.response()
     .putHeader("Content-type", "application/json; charset=utf-8")
     .setStatusCode(500)
     .end(routingContext.failure().message ?: "internal server error")
}