在为某些自定义数据运行排序程序时,我得到了一些运行时异常,占用了eclipse中的整个控制台。我想看看异常的原因和消息。所以我使用如下的FileWriter来编写异常消息。但是文本文件是0字节,这意味着什么都没写。
我还尝试从终端运行代码(在linux -ubuntu中)并使用>重定向异常消息,但只获得system.out.println()的输出 FileWriter不会写异常消息。
以下是代码的相关部分..有人可以告诉我为什么会这样吗?我尝试添加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块内的任何内容都不会打印出值。
更新: 这是一个stackoverflow错误,这就是为什么它没有被catch块捕获的原因(这是为了RuntimeException)..
我通过设置
检测到了这一点 System.setErr(new PrintStream(new File("error.txt")));
因此,stacktrace打印在error.txt中,显示
Exception in thread "main" java.lang.StackOverflowError
at mysort.exercises.MySort.partition(MySort.java:67)
答案 0 :(得分:0)
尝试
File file = new File("sorterr.txt");
BufferedWriter output = new BufferedWriter(new FileWriter(file));
output.write(e.getMessage());
output.close();
问题是您使用的是FileWriter错误。