vertx 监听端口的错误怎样监听。

发布于 2022-09-06 00:27:28 字数 695 浏览 12 评论 0

@Override
    public void start() throws Exception {
        try{
            vertx.createHttpServer()
                    .requestHandler(req -> req.response().end("hello"))
                    .listen(8080)
                    .connectionHandler( r-> {
                        System.out.println(r.remoteAddress());
                    })
                    .close( r -> {
                        System.out.println("closed");
                    });
        }catch (Exception e){
            //e.printStackTrace();
            System.out.println("eeee");
        }


    }

我想捕获 java.net.BindException: Address already in use: bind 该怎么写。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反目相谮 2022-09-13 00:27:28

首先你必须要理解vertx的设计——全异步非阻塞设计,因此vertx的方法几乎都是异步的,你无法像同步方法这样try-catch捕获异常。

vertx将异常信息全部放在了回调中,因此你必须在回调函数中获取异常信息。参考官方文档: http://vertx.io/docs/vertx-co...

稍作修改即可:

HttpServer server = vertx.createHttpServer();
server.listen(8080, "myhost.com", res -> {
  if (res.succeeded()) {
    System.out.println("Server is now listening!");
  } else {
    System.out.println("Fatal error: " + res.cause());
    vertx.close();  // 严重错误,不应该继续运行,需要关闭vertx实例
    System.exit(-1);  // 自定义程序非正常退出码,这里定义255
  }
});

AsyncResultcause()方法即可拿到Throwable对象,进而得到Exception类型和内容。

强烈建议详读vertx官方文档中的core部分,对理解vertx的框架设计非常重要。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文