日期:2014-05-20  浏览次数:20955 次

关于异常捕获异常写入文件
希望把数组越界的异常写入一个文件中,并加入产生异常的时间。我写的代码如下
Java code

package com.cn.shijiu;

import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1
{

    public static void main(String args[]) throws IOException
    {

        try
        {
            int[] a = new int[2];
            System.out.println(a[3]);

        } catch (Exception e)
        {

            try
            {
                FileWriter fw = new FileWriter("d:\\log.txt");
                Date d = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                String s = sdf.format(d);
                fw.write(s);
                fw.flush();
                e.printStackTrace(new PrintStream("d:\\log.txt"));
            } catch (FileNotFoundException e1)
            {

                e1.printStackTrace();
            }

        }

    }

}



文件名不同的话,时间,和异常分别能写进2个文件。但是文件名相同的话就不行了。
不知道问题出哪了?哪位给指导下。

------解决方案--------------------
e.printStackTrace(new PrintStream("d:\\log.txt"));
//如果log文件没创建,这句会创建文件 如果创建了 这句会将log文件中的信息覆盖掉
所以不会显示时间的信息

------解决方案--------------------
改成下面这样就可以了,异常信息都存在一个文件当中
Java code

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1
{

    public static void main(String args[]) throws IOException
    {

        try
        {
            int[] a = new int[2];
            System.out.println(a[3]);

        } catch (Exception e)
        {

            try
            {
                FileWriter fw = new FileWriter("d:\\log.txt",true);
                Date d = new Date();
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                String s = sdf.format(d);
                fw.write(s);
                fw.write("\r\n");
                fw.flush();
                e.printStackTrace(new PrintWriter(fw));

                fw.close();
            } catch (FileNotFoundException e1)
            {

                e1.printStackTrace();
            }

        }

    }

}