可以在Sentinel值使用System.exit()吗?

时间:2015-02-27 00:49:05

标签: java

  1. 可以System.exit()使用哨兵值吗?

  2. 如果不是System.exit()提供的目的是什么?

  3. 如果此代码处于循环中且已输入,是否会退出?

  4.  String day;
     day = JOptionPane.showInputDialog("what is todays date");
     JOptionPane.showMessageDialog(null,"Today is: " + day);
     System.exit(1);
    

3 个答案:

答案 0 :(得分:1)

  

1.can system.exit()可用于哨兵值吗?

为什么要将它用作哨兵值?您可能无法在循环中将其用作循环保护,因为一旦退出,您的程序就会终止。

其次,如果有任何未完成的任务,你的程序将突然终止。

  

如果不是2.system.exit()提供的目的是什么?

您可以查看有关Java的System.exit()的帖子:Java's System.exit(0); vs C++ return 0;

  

3.如果此代码处于循环中并且它们输入1.它会退出吗?

无论输入什么内容,您的代码最终都会退出。它不仅会退出循环,还会终止你的程序。要跳出循环,请使用break而非System.exit()

要跳过循环中的其余代码,请使用continue

答案 1 :(得分:0)

按顺序出现:

  1. 不,您不能将System.exit(status)用作哨兵值,因为它不是值,而是方法调用;
  2. System.exit(int status)退出应用程序和虚拟机,结束所有线程并将status代码返回给调用应用程序或终端;
  3. 是的,调用System.exit方法的线程不会执行调用后出现的任何代码,并且VM将被终止。
  4. 请注意,编译器不会将对System.exit(int status)的调用视为其所在代码块的退出点。这意味着您可能会遇到编译器错误,如果您会抛出异常,而是使用breakcontinuereturn。编译器不知道System.exit(int status)做了什么,它只是将其视为任何其他方法调用。

    要退出循环,您应该使用break或在whilefor中使用布尔条件(在第一个;之后字符)。

    通常只有在应用程序需要提前终止时才会调用System.exit(),并返回0以外的错误代码。通常,当所有(非deamon)线程都已完成时,应用程序将以状态码0退出。这通常是在不执行多线程的应用程序中退出main方法时(GUI应用程序通常执行多线程)。

答案 2 :(得分:0)

任何流都不应该从System.exit()派生。

您从程序中退出了各种其他模式

返回,继续,中断甚至你都可以抛出逻辑异常,这也让你知道程序的状态。