9

如果我想检查是否存在一些先决条件以运行 java 程序,什么是最好的?
做: System.exit(1);

或者抛出一个RuntimeException结束main主线程?(还没有其他线程在运行)

4

6 回答 6

10

理想情况下,您可以优雅地终止线程。System.exit(1)也可以,但是如果你的线程得到信号,他们需要停止他们正在做的事情并通过完成他们正在做的事情来终止(即执行他们的方法直到最后),那就更好了。这显然取决于您的设计。

投掷 aRuntimeException似乎太不雅了,可能会导致您做出您实际上并不想要的行为。

于 2013-02-13T15:05:06.300 回答
2

您最好调用exit异常,因为异常用于帮助您捕获编程流程中的错误并相应地处理它们。

从用户的角度来看,让应用程序打印到System.err问题然后优雅地关闭比查看堆栈跟踪或其他EXCEPTION不应期望他们理解的代码符号更直观。

于 2013-02-13T15:05:42.523 回答
2

如果您想要堆栈跟踪,请使用RuntimeException,如果不是System.exit(1)更清洁。

于 2013-02-13T15:06:25.510 回答
1

没有比您发布的信息更多的信息,我会这样做:

public static void main(String[] args) {
    boolean precondition = ... // determine your precondition here
    if (precondition) {
        // run program
    } else {
        System.out.println("Preconditions not satisfied.");
    }
}
于 2013-02-13T15:04:51.447 回答
1

两者都很好,但我更喜欢使用 ,System.exit()因为RuntimeException可能会被认为具有误导性。

于 2013-02-13T15:07:46.563 回答
0

切勿强行退出。以允许您的应用程序用尽方法并自行关闭的方式对您的运行时方法进行编程。我建议在任何结构应用之前绘制图表。

于 2015-01-19T20:56:41.503 回答