如何从Java中的另一个应用程序抛出异常?

时间:2013-05-29 17:40:43

标签: java exception runtime exec

我有以下代码将DataIntegrationV8.jar的输出打印到JTextArea。是否可以在同一个JTextArea中打印该程序抛出的异常?

protected Integer doInBackground() throws Exception {
        Process process;
        InputStream iStream;
        try {
            //run the DataIntegration.jar
            process = Runtime.getRuntime().exec("java -jar DataIntegrationV8.jar sample.xml");
            istream = process.getInputStream();
        } catch (IOException e) {
            throw new IOException("Error executing DataIntegrationV8.jar");
        }

        //get the output of the DataIntegration.jar and put it to the 
        //DataIntegrationStarter.jar form
        InputStreamReader isReader = new InputStreamReader(iStream);
        BufferedReader bReader = new BufferedReader(isReader);
        String line;

        while ((line = bReader.readLine()) != null) {
            jtaAbout.append(line + "\n");
        }
        Thread.sleep(1);
        return 42;
    }

2 个答案:

答案 0 :(得分:2)

默认情况下,异常堆栈跟踪显示为System.err。您可以将ErrorStream的输出包含到JTextArea

BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errorLine = null;
while ((errorLine = error.readLine()) != null) {
    jtaAbout.append(errorLine + "\n");
}

答案 1 :(得分:0)

你可以检查程序返回的错误代码,它不是零,你知道输出是一个java堆栈跟踪,因为程序终止......很糟糕。