为什么可以';我是否从异常块中重新执行Java程序?
我正在尝试运行以下Java代码,当我通过windows命令行上的CTRL+C终止它时,该代码应该会自动重新启动:为什么可以';我是否从异常块中重新执行Java程序?,java,processbuilder,Java,Processbuilder,我正在尝试运行以下Java代码,当我通过windows命令行上的CTRL+C终止它时,该代码应该会自动重新启动: import java.net.*; import java.io.*; public class LineRunner extends Thread { public static void main(String[] args) throws InterruptedException, IOException{ try { fo
import java.net.*;
import java.io.*;
public class LineRunner extends Thread {
public static void main(String[] args) throws InterruptedException, IOException{
try {
for (int i = 0; i<10000000; i++) {
Thread.sleep(200);
System.out.print("hithe");
}
}
catch( InterruptedException ioex) {
String[] command = {"C://Program Files//Java//jdk1.7.0_02//bin//java.exe", "LineRunner"};
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process exec = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(exec.getInputStream()));
String text = null;
while ((text = br.readLine()) != null) {
System.out.println(text);
}
System.out.println("Process exited with " + exec.waitFor());
}
}
}
import java.net.*;
导入java.io.*;
公共类LineRunner扩展线程{
公共静态void main(字符串[]args)引发InterruptedException、IOException{
试一试{
对于(int i=0;iCtrl-C将退出JVM,正如评论中已经讨论过的那样。您需要使用它来侦听程序退出,然后可以在那里重新启动程序。任何异常?如果是,请发布堆栈跟踪。此外,请正确格式化源代码。您知道Ctrl-C会引发中断异常吗认为它关闭了JVM(但可能是错误的)。还有,这段代码背后的原理是什么?它看起来不像是一个安全的程序设计,如果它有效,可能会被证明是非常烦人的。@HovercraftFullOfEels-我相信你在这一点上可能是对的。当我键入CTRL+C
时,它会停止输出并转到下一个命令行。听起来你好像想捕获SIGIN这可能会给你一些想法。同样,尽管这个程序设计可能会让用户非常恼火。制作了一个社区wiki,以便我(或plkmthr)不要因为之前在评论中讨论的内容而获得分数。特别是因为plkmthr在评论中已经确定了这一点之后才进行了回答。我直到今天才看到这些评论,并检查了对答案的反对票。很难在stack overflow应用程序上跟踪评论和答案。我从未对任何人投过反对票。W当你无缘无故地被否决时,这是没有意义的。如果你因为你认为你已经建立了一些世界已经知道的东西而否决了我,那么你对我来说也没有意义。