【问题标题】:Can System.exit() be used at sentinel value?System.exit() 可以用于标记值吗?
【发布时间】:2015-04-29 14:37:23
【问题描述】:
  1. System.exit() 可以用作标记值吗?

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

  3. 如果这段代码在循环中被输入,会退出吗?

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

【问题讨论】:

  • “哨兵价值”是什么意思?
  • @Soong 哨兵值是循环守卫。
  • Java 知道大写/小写。你不能写system.exit,你通常应该使用System.exit(int)或者只使用System.exit,因为System.exit需要1个参数。

标签: java


【解决方案1】:

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

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

return 、 continue 、 break 甚至你可以抛出逻辑异常,这也让你知道程序的状态。

【讨论】:

    【解决方案2】:

    按出场顺序:

    1. 不,您不能使用System.exit(status) 作为标记值,​​因为它不是一个值,而是一个方法调用;
    2. System.exit(int status) 退出应用程序和虚拟机,结束所有线程并将status 代码返回给调用应用程序或终端;
    3. 是的,调用System.exit方法的线程不会执行调用后出现的任何代码,VM会被终止。

    请注意,编译器不会将对 System.exit(int status) 的调用视为其所在代码块的退出点。这意味着您可能会遇到编译器错误,如果您愿意抛出异常,请改用breakcontinuereturn。编译器不知道System.exit(int status) 做了什么,它只是将其视为任何其他方法调用。

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

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

    【讨论】:

      【解决方案3】:

      1. system.exit() 可以用在哨兵值上吗?

      为什么要将它用作标记值?您可能不能将它用作循环中的循环保护,因为一旦退出,您的程序就会终止。

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

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

      你可以看看这篇关于 Java 的 System.exit() 的帖子:Java's System.exit(0); vs C++ return 0;

      3.如果这段代码在一个循环中并且他们输入了1。它会退出吗?

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

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

      【讨论】:

        猜你喜欢
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        相关资源
        最近更新 更多