爪哇2博客
爪哇2博客

爪哇尝试使用资源

In this post, we will see about 爪哇 尝试资源 声明.


爪哇 尝试资源 is a feature of 爪哇 which was added into 爪哇 7. It helps to 关 all the resources declared within 尝试 block. It automatically 关s the resources after being used. A resource can be any file or a database 连接ion.
例如,如果我们正在处理文件处理,则在打开文件后,需要在读取或写入数据后将其关闭。在早期版本中 爪哇, we have to explicitly 关 the resource, but from 爪哇 7, we don’无需担心关闭资源。

哪些类型的资源可以自动处理?

爪哇 says, any object that 实施 爪哇.lang.AutoCloseable 接口 and 爪哇.io.Closeable 接口,可以用作资源。

让’从示例开始,以理解该主题。

较旧的方法来关闭资源

这是我们用于处理文件相关操作的较旧方法。
Notice, we manually 关d the resource using 关() method.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
进口 爪哇.io .FileOutputStream;
 
上市 主要{
    上市 静态的 虚空 主要([] args){
        尝试 {
            FileOutputStream fileOutputStream = FileOutputStream(“ info.txt”);
            fileOutputStream.(“ 爪哇2blog是一个技术博客”.getBytes());
            系统..打印(“文件已写入”);
            fileOutputStream.(); //关闭资源
        }抓住(例外 e) {
            系统..打印(e);
        }
    }
}
 

输出:

文件被写入

爪哇 7试用资源

爪哇 7中引入了对资源的尝试,它有助于减少手动关闭资源的工作量。现在,我们不’ need to use 关() method. See the example.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
进口 爪哇.io .FileOutputStream;
 
上市 主要{
    上市 静态的 虚空 主要([] args){
        尝试 (FileOutputStream fileOutputStream = FileOutputStream(“ info.txt”)){
            fileOutputStream.(“ 爪哇2blog是一个技术博客”.getBytes());
            系统..打印(“文件已写入”);
            // fileOutputStream.close();无需手动关闭
        }抓住(例外 e) {
            系统..打印(e);
        }
    }
}
 

输出:

文件被写入

句法

以下是try资源的语法,其中包括括号之类的功能以收集资源。

1
2
3
4
5
6
7
8
9
10
 
尝试(  
        //资源    
        ){
    // 尝试块的主体
 
}抓住( //异常){
    //处理程序代码
}
 

注意: 在竞彩篮球分析 7版本之前,仅使用finally块来确保正确关闭资源。

让’我们再举一个竞彩篮球分析尝试使用资源的示例。在这里,我们正在创建数据库连接,而不是关闭连接,因为它将由新的try块处理。
注意,我们在其中使用了多个资源,这意味着它也可以处理多个资源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
进口 爪哇.sql.连接;
进口 爪哇.sql.驱动程序管理器;
进口 爪哇.sql.结果集;
进口 爪哇.sql.声明;
 
上市 主要{
    上市 静态的 虚空 主要([] args){
        尝试(    连接 骗局 = 驱动程序管理器.getConnection( “ jdbc:mysql:// localhost:3306 / employee”,“用户名”,“用户密码”);  
                声明 stmt=骗局.createStatement();  
                结果集 rs=stmt.executeQuery(“从emp中选择*”);  
                )
        {  
            (rs.下一页()){    
                系统..打印(rs.getInt(1)++rs.getString(2)++rs.getString(3));    
            }  
        }  
        抓住(例外 e){    
            系统..打印(e);  
        }    
    }
}
 

爪哇 9Try with resources Improvements

在竞彩篮球分析 9中,对资源尝试进行了改进,允许在try块之外声明或创建资源。在竞彩篮球分析 9之前是不可能的,并且编译器会生成错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
进口 爪哇.io .FileNotFoundException;
进口 爪哇.io .FileOutputStream;
 
上市 主要{
    上市 静态的 虚空 主要([] args) 抛出 FileNotFoundException{
        FileOutputStream fileOutputStream = FileOutputStream(“ info.txt”); //在try块之外
        尝试 (fileOutputStream){
            fileOutputStream.(“ 爪哇2blog是一个技术博客”.getBytes());
            系统..打印(“文件已写入”);
        }抓住(例外 e) {
            系统..打印(e);
        }
    }
}
 

输出:

文件被写入

看,我们在try之外使用资源声明了资源,并且编译器成功编译了文件,但是对于竞彩篮球分析 7或竞彩篮球分析 8,我们不能这样做。

最后尝试使用资源

Although 爪哇尝试使用资源 does resource cleanup tasks automatically but in case, if there is any resource which does not implement 自动关闭 接口 need to be 关d in 最后 block.
在这个例子中,我们使用带有资源尝试的finally块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
进口 爪哇.io .FileNotFoundException;
进口 爪哇.io .FileOutputStream;
 
上市 主要{
    上市 静态的 虚空 主要([] args) 抛出 FileNotFoundException{
        FileOutputStream fileOutputStream = FileOutputStream(“ info.txt”);
        尝试 (fileOutputStream){
            fileOutputStream.(“ 爪哇2blog是一个技术博客”.getBytes());
            系统..打印(“文件已写入”);
        }抓住(例外 e) {
            系统..打印(e);
        }
        最后 {
                //资源释放代码
            系统..打印(“最后执行块”);
        }
    }
}
 

输出:

文件被写入
最后执行块

创建自定义自动关闭代码

Any 类 that 实施 自动关闭 接口 can be used in 尝试资源. 让’s create a 类 and 实施 自动关闭 接口. This 类 has some utility methods.
Notice, we did not call 关() method of 建立连接 类, but it is called implicitly by the compiler. See the example and its 出put.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
建立连接 实施 自动关闭{
    虚空 骗局figureConnection() {
        系统..打印(“连接已配置。”);
    }  
    虚空 连接() {
        系统..打印(“连接的”);
    }
    @覆写
    上市 虚空 () 抛出 例外 {
        系统..打印(“连接已关闭。”);
    }
}
 
上市 主要{
    上市 静态的 虚空 主要([] args){
        建立连接 骗局 = 建立连接();
        尝试 (骗局){
            骗局.骗局figureConnection();
            骗局.连接();
        }抓住(例外 e) {
            系统..打印(e);
        }
    }
}
 

输出:

连接已配置。
连接的
连接已关闭。

那’关于竞彩篮球分析的全部信息尝试使用资源。

分享这个

作者

关注作者

    相关文章

    发表评论

    您的电子邮件地址不会被公开。 必需的地方已做标记 *

    订阅我们的新闻

    获取质量教程到您的收件箱。现在订阅。


    让’s be Friends

    ©2020 爪哇2博客