最近,在学习RabbitMQ时,根据官方文档进行Connection连接时,官方文档提供了示例代码,如下:
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
...
}
在try语句后面,有一对括弧(),里面包含了两行代码,可以发现是两个连接。
Connection connection = factory.newConnection();
Channel channel = connection.createChannel()
因为是第一次见到这种方式,所以查询了一下《Java核心技术卷I》原书第10版,在278页讲述了这种方式叫做带资源的try语句。
我们经常见到的代码模式为:
open a resource
try{
work with res;
} finally{
close res;
}
从Java7之后,只要满足资源属于一个实现了AutoCloseable接口的类的条件,就可以使用带资源的try语句方式。
带资源的try语句(try-with-resources)的最简形式为:
try(Resource res = ...){
work with res;
}
在try块退出时,会自动调用res.close()来关闭资源连接。
需要注意的是,不论程序时正常执行完成退出try块,还是执行过程中抛出异常退出try块,资源都会被关闭。