黑马程序员技术交流社区
标题:
18期来了,毕老师教程里面是否有个漏洞???
[打印本页]
作者:
偏執旳、靑春
时间:
2013-3-1 13:36
标题:
18期来了,毕老师教程里面是否有个漏洞???
本帖最后由 偏執旳、靑春 于 2013-3-1 13:38 编辑
class ExceptionInfo
{
public static void main(String[] args)
{
try
{
int[] arr=new int[2];
System.out.println(arr[3]);
}
catch (Exception e)
{
try
{
Date d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s=sdf.format(d);
PrintStream ps=new PrintStream("exception.log");
ps.println(s);
System.setOut(ps);
}
catch (IOException ee)
{
throw new RuntimeException("日志文件创建失败");
}
e.printStackTrace(System.out);
}
}
这个程序里面是不是没有关流啊?
打印流里面明显yougeclose()方法,这里是没有必要还是毕老师忘记了?
作者:
曹春贵
时间:
2013-3-1 13:38
可能忘记了吧
作者:
偏執旳、靑春
时间:
2013-3-1 14:20
也许是吧!!我也不清楚
作者:
刘渝灵
时间:
2013-3-1 15:56
我有这样一个印象:PrintStream这种输出流不用手动关闭,系统会自动完成。
不知道对不对。
作者:
李文龙
时间:
2013-3-2 07:15
字符流需要close ,字节流不需要close ,所以字节流没有flush 和close方法,你可以查看一下API
作者:
偏執旳、靑春
时间:
2013-3-2 11:55
李文龙 发表于 2013-3-2 07:15
字符流需要close ,字节流不需要close ,所以字节流没有flush 和close方法,你可以查看一下API ...
API里面可是有的哦!!!
作者:
赵华帅
时间:
2013-3-3 15:04
本帖最后由 赵华帅 于 2013-3-3 15:10 编辑
使用System.setOut()方法时,setOut方法真正调用的是一个用native关键字修饰的setOut0()方法。被native关键字修饰的方法,其实现过程是由其它语言编写的,它需要提供一个后缀名为".dll"的动态链接库文件给java,在java中调用System.loadLibrary(dll文件名)后,就可以正常使用那个被native关键字修饰的方法了,就像使用其它java方法一样。或许,人家在dll文件中的函数(其它语言编写的)里面,把那个打印流关了吧。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2