如果我想检查是否存在一些先决条件以便运行java程序最好的是什么?
做:
System.exit(1);
或者在RuntimeException
中抛出一个main
来结束主线程? (还没有其他线程在运行)
答案 0 :(得分:10)
理想情况下,您可以优雅地终止线程。 System.exit(1)
也可以工作,但如果你的线程发出信号表明他们需要停止他们正在做的事情并通过完成他们正在做的事情(即执行他们的方法直到结束)终止它会更好。这显然取决于你的设计。
投掷RuntimeException
似乎太不合适了,可能会导致你实际上不想要的行为。
答案 1 :(得分:2)
如果您想要堆栈跟踪,请使用RuntimeException
,如果不是System.exit(1)
则更清楚。
答案 2 :(得分:1)
没有比你发布的信息更多的信息我会做这样的事情:
public static void main(String[] args) {
boolean precondition = ... // determine your precondition here
if (precondition) {
// run program
} else {
System.out.println("Preconditions not satisfied.");
}
}
答案 3 :(得分:1)
最好调用exit
,因为异常用于帮助您捕获编程流程中的错误并相应地处理它们。
从用户的角度来看,将应用程序打印到System.err
问题,然后优雅地关闭比查看堆栈跟踪或其他代码符号(如EXCEPTION
更加直观),这些符号不应该被期望理解。
答案 4 :(得分:1)
两者都不错,但我更倾向于使用System.exit()
,因为RuntimeException
可能被视为具有误导性。
答案 5 :(得分:0)
切勿强行退出。以允许应用程序用完方法并自行关闭的方式编写运行时方法。我建议在任何结构应用之前绘制图形。