黑马程序员技术交流社区

标题: IO异常处理问题 [打印本页]

作者: 詹英鹏    时间: 2012-1-2 19:30
标题: IO异常处理问题
本帖最后由 詹英鹏 于 2012-1-3 11:06 编辑

IO方面的代码有很多类后面加上throws IOException这样的代码
该方法可能产生的异常,交由该方法的调用者去处理,但在main方法后throws的异常,由谁处理呢?
而且还有一个问题,这个IOException如果不抛出,使用try,catch语句有什么区别啊,反正最后
编译不通过都是错误,也会提醒你,这样抛不抛出异常有什么区别么?
作者: 刘旭    时间: 2012-1-2 20:34
当在main方法后抛出异常时,异常由系统默认的方式处理。当用try  ……catch方法抛出异常时,可以自定义异常,在控制台输出某些友好的提示信息,或输出日志信息,便于自己调试程序。但是,在发布程序时,往往以友好的方式向用户提示异常信息,或者输出到日志,便于技术人员修改调试。
作者: 刘健    时间: 2012-1-2 20:46
try...catch也抛出异常啊。抛出异常主要是有一些异常影响程序的运行和编译。还有就是一个程序可能有的异常是很多,用try..catch可以明确的区分这些异常,判断程序是哪里出错
作者: 黑马巩伟伟    时间: 2012-1-2 21:05
因为代码编译加载后JVM就调用main方法开始执行代码,所以在main方法后抛出的异常,最后就交给JVM处理了。用try...catch的目的就是在这里将错误由程序员来处理最终不会让用户看到,这才算是一段格式良好的代码。
作者: ytzhyp    时间: 2012-1-3 11:03
我建议你理解一下什么是IOException
这个你可以看看API
http://download.oracle.com/javase/6/docs/api/java/io/IOException.html
广泛的说,什么时候会有IOException
比如你文件都不到的时候
你在做数据库操作的时候数据库底层出现问题
或者你系统IO出问题了
系统拿不到文件句柄
你说的读着读着突然被删了,你可以试试,书不定真可以
你可以看有多少IOExeption个子类,差不多就有多少种类型
为什么我要捕获IOExeption
为什么要有checked exception,这个是java设计的问题,暂不深究
但是这个IOException的意思就是告诉你,万一你在做io操作的时候出现异常怎么办

最简单的例子是,我Java代码  
Class clazz = Class.forname("/path/to/class");  

Class clazz = Class.forname("/path/to/class");
这个时候万一找不到这个class文件该怎么办,也算提醒程序员极有可能出现问题的地方,这里不能忽略
还有一个例子是Java代码  
try {   
    stream.close()   
} catch(IOException e) {   
    // ignore   
}  

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

你可以看到这里我们的IOException是忽略的,因为关闭不了,我们也没办法
作者: 詹英鹏    时间: 2012-1-3 11:05
ytzhyp 发表于 2012-1-3 11:03
我建议你理解一下什么是IOException
这个你可以看看API
http://download.oracle.com/javase/6/docs/api/j ...

谢谢,你的答案我很满意
作者: 沈样    时间: 2012-1-3 11:43
我个人感觉是异常抛出,是为了解决程序在碰到特殊情况时候可以不至于程序达到毁灭性的状态,异常处理编写也可以让人可以快速找到异常原因,进行处理,当然如果异常处理为空那就是另说了。thorws异常由jvm处理,如有错误清指出




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2