A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 偏執旳、靑春 于 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()方法,这里是没有必要还是毕老师忘记了?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
可能忘记了吧
回复 使用道具 举报
也许是吧!!我也不清楚
回复 使用道具 举报
我有这样一个印象:PrintStream这种输出流不用手动关闭,系统会自动完成。
不知道对不对。
回复 使用道具 举报
李文龙 来自手机 中级黑马 2013-3-2 07:15:08
报纸
字符流需要close ,字节流不需要close ,所以字节流没有flush 和close方法,你可以查看一下API
回复 使用道具 举报
李文龙 发表于 2013-3-2 07:15
字符流需要close ,字节流不需要close ,所以字节流没有flush 和close方法,你可以查看一下API  ...

API里面可是有的哦!!!
回复 使用道具 举报
本帖最后由 赵华帅 于 2013-3-3 15:10 编辑

使用System.setOut()方法时,setOut方法真正调用的是一个用native关键字修饰的setOut0()方法。被native关键字修饰的方法,其实现过程是由其它语言编写的,它需要提供一个后缀名为".dll"的动态链接库文件给java,在java中调用System.loadLibrary(dll文件名)后,就可以正常使用那个被native关键字修饰的方法了,就像使用其它java方法一样。或许,人家在dll文件中的函数(其它语言编写的)里面,把那个打印流关了吧。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马