import java.lang.Process;
import java.io.*;
import java.io.InuputStream;
import java.io.IOException;
public class newsmail{
public static void main(String[] args) throws IOException{
String command = "java Newsworthy_RB";
Process child = Runtime.getRuntime.exec(command);
int c;
InputStream in = child.getInputStream();
while((c=in.read())!=-1){
System.out.print((char)c);
}
in.close();
command = "java Newsworthy_CA";
Process child = Runtime.getRuntime.exec(command);
InputStream in = child.getInputStream();
while((c=in.read())!=-1){
System.out.print((char)c);
}
in.close();
}
我正在执行上面代码中给出的两个java程序。 如果在第一个程序(Newsworthy_RB)中发生任何错误,我的程序应该终止显示错误。相反,它继续执行第二个程序(Newsworthy_CA)。
应该采取什么措施来获取错误信息......请建议......
答案 0 :(得分:1)
您可以通过显式调用System.exit(status)
来停止该程序。如果出现错误,则应!= 0
表示错误。
您可以通过child.getErrorStream()
访问错误流。
编辑:实际答案取决于您真正想做的事情。如果您的目标只是检查,如果第一个程序成功终止(结束),您可以写下以下内容:
public static void main(String[] args) throws Exception {
Process child1 = Runtime.getRuntime().exec("cmd");
int status1 = child1.waitFor();
System.out.println("Exit status of child one: " + status1);
// Something has gone wrong
if (status1 != 0) {
// end program
return;
}
Process child2 = Runtime.getRuntime().exec("cmd2");
int status2 = child2.waitFor();
System.out.println("Exit status of child two: " + status2);
}
Process#waitFor()
执行以下操作(从javadoc复制):
如果需要,会导致当前线程等待,直到此Process对象表示的进程终止。如果子进程已终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻塞,直到子进程退出。
答案 1 :(得分:1)
尝试
if (child.waitFor() != 0) {
// print error message here
return;
}
两次执行之间。 waitFor
导致当前线程等待,直到关联的进程返回。请参阅here。