import java.io.*;public class ThrowableTest extends Throwable
{
File f1 = new File("d:\\test.txt");
PrintWriter s =new PrintWriter(f1);
public static void main(String argv[])
{
try {
FileInputStream f = new FileInputStream("est.txt");
}
catch (FileNotFoundException e)
{
System.out.println("=== toString() ===");
System.err.println(e); System.out.println("=== getLocalizedMessage() ===");
System.err.println(e.getLocalizedMessage()); System.out.println("=== getMessage() ===");
System.err.println(e.getMessage()); System.out.println("=== printStackTrace() ===");
e.printStackTrace(s);
}
}
}
我想把e.printStackTrace()的信息输出到其他文本上.
申明了两个File f1 = new File("d:\\test.txt");PrintWriter s =new PrintWriter(f1);全局变量,在程序最后e.printStackTrace(s);
请高手帮我看看,我的程序错在哪?要怎么做!谢谢各位大哥了!
{
File f1 = new File("d:\\test.txt");
PrintWriter s =new PrintWriter(f1);
public static void main(String argv[])
{
try {
FileInputStream f = new FileInputStream("est.txt");
}
catch (FileNotFoundException e)
{
System.out.println("=== toString() ===");
System.err.println(e); System.out.println("=== getLocalizedMessage() ===");
System.err.println(e.getLocalizedMessage()); System.out.println("=== getMessage() ===");
System.err.println(e.getMessage()); System.out.println("=== printStackTrace() ===");
e.printStackTrace(s);
}
}
}
我想把e.printStackTrace()的信息输出到其他文本上.
申明了两个File f1 = new File("d:\\test.txt");PrintWriter s =new PrintWriter(f1);全局变量,在程序最后e.printStackTrace(s);
请高手帮我看看,我的程序错在哪?要怎么做!谢谢各位大哥了!
PrintWriter s =new PrintWriter(new FileOutputStream(f1));
PrintWriter s =new PrintWriter(f1);你这两句是建立了两个实例变量,它是ThrowableTest类的实例的,只有使用new ThrowableTest()建立了该类的实例,才可以得到这两个变量。而main方法是不属于任何ThrowableTest类的实例的,它属于ThrowableTest类本身(因此叫静态方法)。main方法的调用,并不能保证有ThrowableTest类的实例被创建,因此也就不能保证有上面的f1和s两个变量被创建并供你使用。解决方法很多:第1种方法:把f1和s变量声明成静态的,即在前面加上static关键字。这样,这两种变量随着类的装载而被初始化,因此可供main方法使用。第2种方法:把f1和s变量的声明放到main方法中去,即声明成本地变量(即方法变量)。第3种方法:在main方法中创建ThrowableTest类的实例,这样就可以通过该实例的引用来间接引用它的实例变量了。如:e.printStackTrace(new ThrowableTest().s);