从java程序查看运行时异常消息

时间:2013-07-20 04:57:47

标签: java runtime-error filewriter

在为某些自定义数据运行排序程序时,我得到了一些运行时异常,占用了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.txt0字节

在终端中,重定向的行为也相同。简而言之,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)

1 个答案:

答案 0 :(得分:0)

尝试

File file = new File("sorterr.txt");
BufferedWriter output = new BufferedWriter(new FileWriter(file));
output.write(e.getMessage());
output.close();

问题是您使用的是FileWriter错误。