黑马程序员技术交流社区
标题:
try catch
[打印本页]
作者:
陈林阳
时间:
2011-9-22 21:34
标题:
try catch
public static void copy_1()
{
FileWriter fw = null;
FileWriter fr = null;
try
{
fw = new FileWriter("SystemDemo_copy.txt");
fr = new FileReader(SystemDemo.java);
char[] buf = new char[1024];
int len =0;
while((len = fr.read(buf))!=-1)
{
fw.write(buf,0,len);
}
}
catch (IOException e)
{
throw new RuntimException("读写失败");
}
finally
{
if(fr!=null)
try
{
fr.close();
}
catch (IOException e)
{
}
if(fw!=null)
try
{
fw.close();
}
catch (IOException e)
{
}
}
}
请问finally中为什么要try catch 两次啊
作者:
匿名
时间:
2011-9-22 22:14
毕老师的视频里面,关于IO流的异常处理讲的很清楚,你可以去复习一下,
作者:
匿名
时间:
2011-9-23 11:50
finally语句:在任何情况下都必须执行的代码。
获取某种类型资源的程序必须显示地将这些资源返回给系统,以避免资源泄漏。Java对程序不再使用的内存执行自动垃圾收集,因而避免了大量的资源泄漏。然而,Java仍有可能出现其他种类的资源泄漏。例如:没有正确关闭文件、数据库连接和网络连接,则其他程序将不能使用这些资源,甚至同一程序的其他执行部分也不能使用它们。
此处不论文件读写是否成功执行,都会关闭IO流的相关资源。
作者:
匿名
时间:
2011-9-23 12:25
。。感觉你们都答非所问的。。。 人家问 finally中的 catch 为什么要弄两个。。?
楼主。。可以这样的。直接一个try-catch写在外面。两个判断写在里面,,就变成一个try-catch了。。
恩。你这里 的两个try-catch 分别在两个 if中。。
作者:
匿名
时间:
2011-9-24 23:06
标题:
回复 楼主 的帖子
fr!=null和fw!=null在两个if语句中,fr.close(); 和 fw.close(); 两者都可能发生异常,所以要用两个try-catch。
作者:
匿名
时间:
2011-9-24 23:22
如果try块中的代码发生了异常,那么就会执行catch块中的代码,完后就会看有没有finally块,如果有,则进去,没有,则会跳出当前方法,不可能再执行catch块后面的代码。finally块就是为了让你执行一些你非常想要执行的代码,无论程序是否发生异常,比如关闭连接或其它的资源释放语句。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2