Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的错误处理_Java_Process_Processbuilder - Fatal编程技术网

java中的错误处理

java中的错误处理,java,process,processbuilder,Java,Process,Processbuilder,我使用ProcessBulider从java代码运行.exe文件,下面给出了我编写的代码。.exe文件以Input.txt(位于同一目录中)作为输入,并在同一目录中提供3个输出文件 public void ExeternalFileProcessing() throws IOException, InterruptedException { String executableFileName = "I:/Rod/test.exe; ProcessBuilder process

我使用ProcessBulider从java代码运行
.exe
文件,下面给出了我编写的代码。
.exe
文件以
Input.txt
(位于同一目录中)作为输入,并在同一目录中提供3个输出文件

public void ExeternalFileProcessing() throws IOException, InterruptedException {

    String executableFileName = "I:/Rod/test.exe;

    ProcessBuilder processBuilderObject=new ProcessBuilder(executableFileName,"Input.txt");

    File absoluteDirectory = new File("I:/Rod");

    processBuilderObject.directory(absoluteDirectory);

    Process process = processBuilderObject.start();

    process.waitFor();
}
通过调用
ExeternalFileProcessing()
,此进程工作正常。现在我正在做验证过程,如果有任何崩溃/.exe文件没有运行,我应该得到错误消息我如何才能得到错误消息


注意:最好是简单的错误消息,如
运行成功/不运行成功
或简单的
真/假
,这样我就可以在
条件下继续剩余的进程。

它是第三方的.exe还是您有权访问它的源代码?如果是这样,您可以使用基本的系统输出(例如控制台的couts)。 这些输出可以通过以下方式重定向到java应用程序:

InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

String line = "";
while ((line = br.readLine()) != null) {        
    if(line.equals("something")) {
        // do something
    }
}
br.close();
这就是我做这类事情的方式,总体来说效果很好。但我必须承认,我不能说这是解决问题的办法。更高级的方法可能是使用(参见清单4.5)来处理.exe的输出。
告诉我它是否对您有帮助。

您可以添加异常处理程序以获取错误消息

public void externalFileProcessing() {

    String executableFileName = "I:/Rod/test.exe";

    ProcessBuilder processBuilderObject = new ProcessBuilder(
            executableFileName, "Input.txt");

    File absoluteDirectory = new File("I:/Rod");

    processBuilderObject.directory(absoluteDirectory);


    try {
        Process process = processBuilderObject.start();
        process.waitFor();
        // this code will be executed if the process works
                    System.out.println("works");
    } catch (IOException e) {
        // this code will be executed if a IOException happens "e.getMessage()" will have an error
        e.printStackTrace();
    } catch (InterruptedException e) {
        // this code will be executed if the thread is interrupted
        e.printStackTrace();
    }
}
但是最好在调用函数中处理它,方法是在调用函数中放置一个try-catch处理程序并在那里处理它