Loading

Java中try()...catch()用法

  在stackoverflow偶尔看到的一个关于try()...catch()的用法,通常我们使用try...catch()捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;在JDK7优化后的try-with-resource语句,该语句确保了每个资源,在语句结束时关闭。所谓的资源是指在程序完成后,必须关闭的流对象;写在括号里面的流对象对应的类都实现了自动关闭接口AutoCloseable

  格式:

try (创建流对象语句,如果多个,使用 ';' 隔开) {
    // 读写数据
}  catch (IOException e) {
    e.printStackTrace();
}

 

  演示代码,下面的test目录是不存在的,运行会抛出异常;

  • JDK1.7之前

FileWriter fw =  null ;

try {
    fw =  new FileWriter( "test\\test.txt" );
    fw.write( "test" );
}  catch (Exception ex) {
    ex.printStackTrace();
}  finally {
    if (fw !=  null ) {
        try {
            fw.close();
        }  catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  

  • JDK1.7之后

try (FileWriter fw =  new FileWriter( "test.txt" )) {
    fw.write( "test" );
}  catch (Exception ex) {
    ex.printStackTrace();
}

 

posted @   街头卖艺的肖邦  阅读(40948)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示