@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
该怎么写。
首先你必须要理解vertx的设计——全异步非阻塞设计,因此vertx的方法几乎都是异步的,你无法像同步方法这样try-catch捕获异常。
vertx将异常信息全部放在了回调中,因此你必须在回调函数中获取异常信息。参考官方文档: http://vertx.io/docs/vertx-co...
稍作修改即可:
AsyncResult
的cause()
方法即可拿到Throwable
对象,进而得到Exception
类型和内容。强烈建议详读vertx官方文档中的
core
部分,对理解vertx的框架设计非常重要。