有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

摇摆系统。在java中退出(0)

我正在使用swing编写一个应用程序。我需要通过单击JButton退出应用程序,因为我可以使用System.exit()或者应该使用其他一些方法,这是最佳实践。如果调用System.exit()不是最佳做法,那么请说明原因并说明退出应用程序的替代方法


共 (5) 个答案

  1. # 1 楼答案

    如果需要为应用程序设置退出代码,则必须使用系统。退出(我想)

    但是当您不需要特定的代码(或者0是可以的)时,我更愿意让JVM“自然”终止,当没有更多(非守护进程)线程时就会发生这种情况

    通常情况下,您只需完成主要方法

    我会小心使用这个系统。退出,因为可能还有其他线程仍需要执行某些操作,而在未正确关闭它们的情况下退出可能会导致损坏。例如,嵌入式数据库可能仍然需要刷新其缓冲区

    如果您了解这些线程,通常可以安排它们优雅地结束。如果您不知道程序中正在运行哪些线程,则会遇到更大的问题

  2. # 2 楼答案

    一般来说,除了应用程序的“main”方法之外,在任何地方调用System.exit(...)都可能有问题,原因至少如下

    • 这是重用代码的障碍

    • 这使得单元测试变得困难。例如,如果您的代码在JUnit测试执行一些错误处理时调用System.exit,那么它将结束您的测试序列

    在按钮侦听器中为“exit”按钮调用System.exit(...)的具体情况并不糟糕。您不太可能希望在不需要这种行为的地方重用按钮侦听器。此外,您可能还可以找到解决单元测试难题的方法;e、 g.不要对特定的方法进行单元测试

    然而,我想我还是会尝试以不同的方式退出。例如,让main方法启动所有内容,然后阻塞倒计时闩锁,然后让按钮侦听器减少闩锁。当main方法解除阻塞时,它执行相关的关闭代码,并根据需要返回或退出

  3. # 3 楼答案

    系统。至少当您有多个线程或资源需要正确关闭(位于JVM之外)时,退出可能是不好的。如果您的应用程序在您认为应该退出的时候没有退出,那么您应该找出问题所在,而不仅仅是调用系统。退出()

    调用系统的唯一原因。exit()将给出一些非标准的退出代码

  4. # 4 楼答案

    <> Personnaly,我认为最好的做法是让应用程序自行退出:如果你写一个带有^ {CD1>}的主类,空代码,运行它将从java程序中悄悄地退出。p>

    但是,在大多数情况下,像大多数开发人员一样,我依赖于System.exit(/an exit code/),特别是对于Swing应用程序,正如justkt所写,Swing EDT将无休止地运行。。这个方法的已知drawxback是大多数应用程序代码都没有被调用,我通过调用Runtime.addShutdownHook(Thread)设置一个关闭钩子来避免这种情况,这将允许我清理应用程序(关闭线程,等等)

  5. # 5 楼答案

    一般来说,你唯一需要做一个系统的时候。exit(n)是指您希望退出带有错误代码的命令行程序,以便监视该程序的任何程序都可以检测到错误代码

    例如,如果您正在编写一个设计为从shell脚本运行的程序,那么这是最有用的

    不过,正如其他回复所说,如果您正在使用线程,那么在考虑系统之前,您必须尽一切努力优雅地关闭它们。出口(n)