java.io.IOException是怎么回事

如题所述

IOException的故事


1. 什么是IOException 
这个你可以看看API 
http://download.oracle.com/javase/6/docs/api/java/io/IOException.html 

2. 广泛的说,什么时候会有IOException 
比如你文件都不到的时候 
你在做数据库操作的时候数据库底层出现问题 
或者你系统IO出问题了 
系统拿不到文件句柄 
你说的读着读着突然被删了,你可以试试,书不定真可以 
你可以看有多少IOExeption个子类,差不多就有多少种类型 

3. 为什么我要捕获IOExeption 
为什么要有checked exception,这个是java设计的问题,暂不深究 
但是这个IOException的意思就是告诉你,万一你在做io操作的时候出现异常怎么办 

最简单的例子是,我

Class clazz = Class.forname("/path/to/class");


这个时候万一找不到这个class文件该怎么办,也算提醒程序员极有可能出现问题的地方,这里不能忽略 

还有一个例子是


try {  
    stream.close()  
} catch(IOException e) {  
    // ignore  
}


你可以看到这里我们的IOException是忽略的,因为关闭不了,我们也没办法 -_-!!! 

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-23
io流异常。看看是不是文件名对不对,路径对不对。
第2个回答  2016-08-24
情况多了 IOException是一个错误的大类,
下面还有各种错误小类ClosedChannelException,FileNotFoundException, FilerException, FileSystemException, HttpRetryException, IIOException....等等
你得列出详细情况才能知道到底是怎么回事
第3个回答  2018-08-04
如下例子代码:
FileInputStream is = new FileInputStream(".");
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();

从设计模式上看:
java.io.BufferedInputStream是java.io.InputStream的装饰类。
BufferedInputStream装饰一个 InputStream 使之具有缓冲功能,is要关闭只需要调用最终被装饰出的对象的 close()方法即可,因为它最终会调用真正数据源对象的 close()方法。

BufferedInputStream的close方法中对InputStream进行了关闭,下面是jdk中附带的源代码:
java.io.BufferedInputStream的api:
close
public void close()throws IOException 关闭此输入流并释放与该流关联的所有系统资源。

因此,可以只调用外层流的close方法关闭其装饰的内层流,验证例子:

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("d:\\a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write("java IO close test");

bw.close();

}

验证ok本回答被网友采纳
相似回答