对某些自定义数据运行排序程序时,我得到了一些运行时异常,它在eclipse中占用了整个控制台。我希望看到异常的原因和消息。因此,我使用下面的FileWriter来编写异常消息。然而,文本文件是0字节,这意味着什么都没有写。我试图从终端(在linux -ubuntu)运行代码,并使用>来重定向异常消息,但只从system.out.println()获得输出() FileWriter不写异常消息。从java程序查看运行时异常消息
下面是代码的相关部分..有人可以告诉我为什么发生这种情况?我尝试添加fw.flush(),但没有任何区别。
public class MySort{
...
public static void sort(String[] data){
...
}
public static void main(String[] args) throws IOException {
String[] a = {"E","A","S","Y","Q","U","E","S","T","I","O","N"};
FileWriter fw = new FileWriter("sorterr.txt");
try{
sort(a);
}catch(RuntimeException e){
System.out.println("some text");
fw.write(e.getMessage());
fw.flush();
fw.close();
System.exit(0);
}
}
}
当在Eclipse或Linux终端上运行,sorterr.txt
是0
字节
在终端,重定向也行为相同。总之,catch块内没有打印出值。
UPDATE: 这是一个计算器的错误,这就是为什么它没有被catch块捕获(这是为那些RuntimeException的)的原因..
我通过设置
System.setErr(new PrintStream(new File("error.txt")));
检测到这种
因而,堆栈跟踪是印在error.txt这表明
Exception in thread "main" java.lang.StackOverflowError
at mysort.exercises.MySort.partition(MySort.java:67)
试图说..still相同的结果..所有错误stacktrace打印到标准输出,而不是文件 – damon
我认为FileWriter将工作与文件名字符串作为参数传递.. – damon