Try-with-resources的语法结构是Java 7引入的用于自动管理资源的语法特性,其核心通过try (资源声明)
语句实现资源的自动关闭,要求资源必须实现AutoCloseable
或Closeable
接口。
基本语法结构
Java中try-with-resources
语法的基本格式如下:
try (资源类型 变量名 = new 资源初始化())
{ // 使用资源的代码 }
catch (异常类型 变量名)
{ // 异常处理 }
核心特点:
- 资源的声明与初始化必须直接写在
try
后的括号内,多个资源用分号分隔; try
块结束后,资源会自动调用close()
方法关闭,无需显式编写finally
块。
资源的使用条件
- 接口要求:资源类需实现
AutoCloseable
(Java 7+)或Closeable
(Java 5+)接口; - 声明限制:资源变量必须在
try
的括号内声明并初始化,外部定义的变量无法自动关闭。
闭合顺序与异常处理
- 闭合顺序:多个资源按声明顺序的逆序关闭(后声明先关闭);
- 异常优先级:若
try
块和close()
均抛出异常,优先保留try
块中的异常,close()
的异常会被抑制(可通过getSuppressed()
获取)。