public class IOException{

    // 获取系统默认的行分隔符
private static final String LINE_SEPARATOR = System.getProperty("line.separator"); public static void main(String[] args){ try{
FileWriter fw = new FileWriter("test.md"); fw.write("abc"+LINE_SEPARATOR+"haha"); } catch (IOException){
System.out.println(e.toString());
} finally{
fw.close(); // 此时, fw 是局部变量, 只在 try 内部有效, 此时 fw 属于未定义变量
}
}
} // 改进第一步: public class IOException{ // 获取系统默认的行分隔符
private static final String LINE_SEPARATOR = System.getProperty("line.separator"); public static void main(String[] args){ FileWriter fw = null; // 创建流对象
try{
// 流对象初始化
fw = new FileWriter("k:\\test.md"); fw.write("abc"+LINE_SEPARATOR+"haha"); } catch (IOException){
System.out.println(e.toString());
} finally{
try{
fw.close();// 此处有可能出现关闭失败的异常, 所以也许要 try catch
} catch (IOException e){
throw new RuntimeException("关闭失败");
}
}
}
} // 运行上述程序: public class IOException{ // 获取系统默认的行分隔符
private static final String LINE_SEPARATOR = System.getProperty("line.separator"); public static void main(String[] args){ FileWriter fw = null;
try{
// 流对象初始化
fw = new FileWriter("k:\\test.md"); // 此处出现异常: FileNotFoundException
// 该异常是 IOException 的子类 fw.write("abc"+LINE_SEPARATOR+"haha"); } catch (IOException){
System.out.println(e.toString);
} finally{
try{
fw.close(); // 由于文件没有创建成功, 因此此处抛出 NUllPointerException
} catch (IOException e){
throw new RuntimeException("关闭失败");
}
}
}
} // 改进第二步: public class IOException{ // 获取系统默认的行分隔符
private static final String LINE_SEPARATOR = System.getProperty("line.separator"); public static void main(String[] args){ FileWriter fw = null;
try{
// 流对象初始化
fw = new FileWriter("k:\\test.md"); // 此处出现异常: FileNotFoundException
// 该异常是 IOException 的子类 fw.write("abc"+LINE_SEPARATOR+"haha"); } catch (IOException){
System.out.println(e.toString);
} finally{
if(fw != null) // 增加一条判断语句
try{
fw.close();
} catch (IOException e){
throw new RuntimeException("关闭失败");
}
}
}
}

参考资料:

Java IO异常处理方式的更多相关文章

  1. Java IO: 异常处理

    原文链接 作者:Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 流与Reader和Writer在结束使用的时候,需要正确地关闭它们.通过调用close()方法 ...

  2. Java的异常处理方式

    一.异常简介 异常结构图 Throwable是类,Exception和Error都继承了该类,error是因为系统内部错误或者资源耗尽错误,这种情况很少出现,而且error也不允许被抛出在Except ...

  3. Java_IO异常处理方式_入门小笔记

    package IO; import java.io.FileWriter; import java.io.IOException; /** * IO异常处理方式 */ class FileWrite ...

  4. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  5. 系统学习 Java IO (十三)----字符读写 Reader/Writer 及其常用子类

    目录:系统学习 Java IO---- 目录,概览 Reader Reader 类是 Java IO API 中所有 Reader 子类的基类. Reader 类似于 InputStream ,除了它 ...

  6. Java IO: RandomAccessFile

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分.FileIn ...

  7. Java IO: FileInputStream

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) FileInputStream可以以字节流的形式读取文件内容.FileInputStream ...

  8. Java IO: FileOutputStream

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) FileOutputStream可以往文件里写入字节流,它是OutputStream的子类, ...

  9. Java IO教程

    1  Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ...

随机推荐

  1. Mybatis设置超时时间

    Mybatis设置超时时间 mybatis如果不指定,默认超时时间是不做限制的,默认值为0.mybatis sql配置超时时间有两种方法: 1.全局配置 在mybatis配置文件的settings节点 ...

  2. mysql查询条件字段值末尾有空格的问题

    mark MYSQL的binary解决mysql数据大小写敏感问题的方法

  3. ubuntu 安装 qt等软件

    1 ubuntu安装qt4 sudo apt-get install qt4-dev-tools qt4-designer qt4-doc qt4-qtconfigqt4-demos qt4-qmak ...

  4. Java动态代理原理及其简单应用

    概念 代理对象和被代理对象一般实现相同的接口,调用者与代理对象进行交互.代理的存在对于调用者来说是透明的,调用者看到的只是接口.代理对象则可以封装一些内部的处理逻辑,如访问控制.远程通信.日志.缓存等 ...

  5. 大数据(7) - zookeeper的安装与使用

    简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  6. JVM参数MetaspaceSize的误解

    前言 昨天谢照东大神在群里提出一个问题:怎么查看Metaspace里具体包含的是什么,起因是他的某个服务设置了-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=5 ...

  7. 日期控件ie9失效

    WdatePicker.js在在IE 6,7,8下面多可以,就是在IE9里面无法打开. 解决方案: 方法一: $crossFrame:true做出修改.true改为false 方法二: <met ...

  8. 【vijos】1757 逆序对(dp)

    https://vijos.org/p/1757 有时候自己sb真的是不好说... 我竟然想了半天都没想到这个转移. 我是有多傻.... 我们设f[i][j]表示1~i的排列且逆序对恰好是j的方案数. ...

  9. cobbler 修改 distro_signatures.json

    edit file in /var/lib/cobbler/distro_signatures.json and restart cobblerd service 转自: https://lists. ...

  10. java基础-集合笔记

    Iterator(foreach) 遍历时只能通过iterator去删除(添加)元素,不能直接通过集合对象删除或添加元素 Set HashSet底层是一个HashMap HashSet添加元素,先判断 ...