Throwable类中方法:
①public void printStackTrace():将此throwable及其追踪输出到标准错误流,此方法将此Throwable对象的堆栈跟踪输出到错误输出流,作为字段System.err的值。
②public void printStackTrace(PrintStream s): 将此 throwable 及其追踪输出到指定的输出流。
public static final PrintStream err:标准错误输出流
所以在写e.printStackTrace()时,也可以写e.printStackTrace(System.err)形式
在底层,①调用②
import java.io.*;
import java.util.*;
import java.text.*;
public class ExceptionInfor {
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:ss:mm");
String s=sdf.format(d);
PrintStream ps=new PrintStream("exception.log");
ps.write(s.getBytes());//PrintStream是OutputStream的子类,所以可以调用write(byte[] b)方法,将其输出到文件中
System.setOut(ps);//改变标准输出,输出为文件
e.printStackTrace(System.out);//标准输出已经改变,所以将异常输出到文件中
}
catch(IOException ex) {
throw new RuntimeException("日志文件创建失败");
}
}
}
}