黑马程序员技术交流社区

标题: 分析 [打印本页]

作者: 程序爱好者    时间: 2014-4-26 16:51
标题: 分析
  1.         public static void Exceptions()throws IOException
  2.         {
  3.                 try {
  4.                         int[] num=new int[3];
  5.                         System.out.println(num[5]);
  6.                 } catch (Exception e) {
  7.                         Date d=new Date();
  8.                         SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
  9.                         String s=sdf.format(d);
  10.                         PrintStream ps=new PrintStream("Exceptions.log");
  11.                         ps.println(s);    //这句怎么理解
  12.                         System.setOut(ps);   
  13.                         e.printStackTrace(System.out);
  14.                 }
  15.         }
复制代码

谁给我讲讲这的意思  详细点
作者: eternallove    时间: 2014-4-26 18:03
PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式的一个类。
PrintStream ps=new PrintStream("Exceptions.log");    创建具有指定文件名称且不带自动行刷新的新打印流对象。
ps.println(s);就是将得到的s字符串写到Exceptions.log文件中。
作者: 小马初长成    时间: 2014-4-26 19:08
public PrintSteam(OutputStream out)和public PrintSteam(OutputStream out,boolean autoFlush)在默认情况下显示刷新,如果autoFlush参数为true,则在每输入一个字节数组或换行,或则调用println()时刷新。
PrintStream ps=new PrintStream("Exceptions.log");//autoFlush参数为true无刷新的功能
在添加Date的同时需要调用ps.println(s)执行刷新操作


作者: 创造命运    时间: 2014-4-26 19:58
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;

public class Test1
{
        public static void main(String[] args) throws Exception
        {
                exceptions();
        }
        public static void exceptions()throws IOException
        {
                try {
                        int[] num=new int[3];
                        System.out.println(num[5]);
                } catch (Exception e) {
                        Date d=new Date();
                        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日  HH:mm:ss");
                        String s=sdf.format(d);
                        PrintStream ps=new PrintStream("Exceptions.log");
                        ps.println(s);    //这句怎么理解。
                        System.setOut(ps);   
                        e.printStackTrace(System.out);
                }
        }
}

ps.println(s);    //这句怎么理解。这句话的意思就是将字符串s(即日历)打印到文件Exception.log中去。我完善了一下代码,你可执行该代码后,在你存放该程序的当前目录下查看Exception.log这个文件的内容,会有如下内容:
2014年04月26日  19:50:30                (当然,这里的时间将会是你运行该程序时的时间。)
java.lang.ArrayIndexOutOfBoundsException: 5
        at Test1.exceptions(Test1.java:96)
        at Test1.main(Test1.java:90)


作者: 世界公民    时间: 2014-4-26 21:10
起来。。。不愿做奴隶的人们。。。。




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