java - 如何获取 Java 中另一个应用程序抛出的异常?

标签 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;
    }

最佳答案

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

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

关于java - 如何获取 Java 中另一个应用程序抛出的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820528/

相关文章:

c# - 是否有任何正当理由忽略捕获的异常

spring - 了解 Spring JPA Hibernate 中延迟加载的事务 session

python - 是否可以限制 python 中的一段代码对全局变量的访问?

java - POI中多列写入

java - HttpMediaTypeNotAcceptableException 对于文本/纯消息响应的错误?

java - 如果 java 中出现未处理的异常,谁打印异常堆栈跟踪?

c++ - 如何检查正在运行的进程以查看它正在使用哪些共享库?

java - 在运行时更改java类

Java IO file length() 和 lastModified() 在处理数百万个文件时执行缓慢

java - BMI 计算器,需要帮助修复清除按钮