Java中是否有退出成功和退出失败的替代品?

Java中是否有退出成功和退出失败的替代品?,java,return,exit,Java,Return,Exit,在C程序中,我通常在EXIT()函数中使用EXIT\u SUCCESS或EXIT\u FAILURE,以提高程序的清晰度和易懂性 但是在System.exit()中,我无法使用这些宏 我可以将自己的接口定义为 public interface ReturnValues { public int EXIT_SUCCESS = 0; public int EXIT_FAILURE = 1; } 除了我自己的实现之外,java中还有其他方法可以使用这些宏吗?(如使用预定义的库类变量或实现预定

在C程序中,我通常在
EXIT()
函数中使用
EXIT\u SUCCESS
EXIT\u FAILURE
,以提高程序的清晰度和易懂性

但是在
System.exit()
中,我无法使用这些宏

我可以将自己的接口定义为

public interface ReturnValues {
  public int EXIT_SUCCESS = 0;
  public int EXIT_FAILURE = 1;
}

除了我自己的实现之外,java中还有其他方法可以使用这些宏吗?(如使用预定义的库类变量或实现预定义的接口等)

在java中,使用枚举进行此类操作:

public enum ReturnValue {
    SUCCESS(0),
    FAILURE(-1);

    private int returnCode;

    private ReturnValue(int returnCode) {
        this.returnCode = returnCode;
    }

    public int getReturnCode() {
        return returnCode;
    }
}
使用:

System.exit(ReturnCode.FAILURE.getReturnCode());

不,Java中没有成功和失败的预定义常量。当然,因为可能会有几种不同类型的故障,具体取决于每个特定的应用程序。

Java中没有宏
System.exit(0)
System.exit(-1)
可读性很强,不会变得太复杂。

他问“
其他我自己的实现
”。这是自己的实现。我相信他会问Java是否有这些内置常量enum它在普通int常量上添加了什么?@JB:如果你在应用程序的其他地方需要它,那么就进行类型检查。仅仅因为Java有
enum
类型并不意味着你应该一直使用它们。在本例中,您将编写额外的代码来定义
enum
,并编写额外的代码来使用它。这不是一个改进。至少在Linux上,FAILURE是1,而不是-1。但这就是ISO-C提供退出失败的全部要点——没有一个常数可以在所有平台上使用。很遗憾JAVA没有这样做。@McDowell是的,确实如此。参考号:。谢谢你的评论。我纠正了它。但在C中任何函数的一般理论中,误差都会返回-1。我说得对吗?需要解释。退出代码的范围是有限的,但我相信POSIX系统将值限制在0-255。@2的补码中,-1映射为所有1的二进制数。或者,在十六进制中,所有的Fs。用作错误的退出值可能不是标准值,但0000和FFFF之间的差异肯定比0000和0001之间的差异更容易看出。当然,任何一个理智的处理器都会花同样多的时间来分辨差异,但作为一个人,这很好。只是澄清一下,无论使用哪种操作系统和编程语言,都可能存在不同类型的故障和故障代码。EXIT_SUCCESS定义为成功运行,所有其他代码均为失败。EXIT_FAILURE是一个通用故障代码,如果您不想具体说明的话,可以使用它。退出成功的定义取决于系统。在Posix中是0。Windows将其定义为1。被否决是因为你在很多方面都错了。EXIT_SUCCESS和EXIT_FAILURE存在,因此,如果您不想具体说明,但不知道主机系统上的成功和失败对应的数字,可以使用这些常量。通常,0表示成功,任何非零值都表示失败,但这并不是普遍正确的,因此C stdlib规定。顺便提一下,对于特定的错误代码(至少在Linux中),您可以使用sysexits.h作为指南。退出代码因系统和应用程序而异,因此Java中的奇怪之处在于没有提供标准化的接口。