如果java应用程序停止工作,请将其关闭
如果出现错误,是否有方法关闭java应用程序?e、 g.如果我有一个nullpointerexception,我可以将其完全关闭吗?您可以使用如果java应用程序停止工作,请将其关闭,java,Java,如果出现错误,是否有方法关闭java应用程序?e、 g.如果我有一个nullpointerexception,我可以将其完全关闭吗?您可以使用系统退出(0)终止JVM 但是,您应该通过在使用引用之前检查引用来避免NullPointerException: if(foo != null) foo.doSomething(); 您可以使用System.exit(0)终止JVM 但是,您应该通过在使用引用之前检查引用来避免NullPointerException: if(foo != null) f
系统退出(0)
终止JVM
但是,您应该通过在使用引用之前检查引用来避免NullPointerException
:
if(foo != null) foo.doSomething();
您可以使用
System.exit(0)
终止JVM
但是,您应该通过在使用引用之前检查引用来避免NullPointerException
:
if(foo != null) foo.doSomething();
顶层的任何未捕获异常都将自动停止它所在的线程。如果程序中有多个线程,那么其他线程仍将继续存在。如果要显式终止,可以调用
System.exit()
顶级的任何未捕获异常都将自动停止它所在的线程。如果程序中有多个线程,那么其他线程仍将继续存在。如果要显式终止,可以调用System.exit()
,正如其他人所说,捕获异常并调用System.exit()
通常是正确的方法。但还有比这更重要的事情:
问:我真的需要抓住它吗
答:如果您的应用程序是传统的命令行应用程序,并且异常是在“主”线程上抛出的,那么您可能不需要捕获它。主线程上未捕获的异常将导致应用程序退出。。。如果不存在其他非守护进程线程。(事实上,任何线程都是如此……)
但是,如果您的线程有多个非守护进程线程,则需要采取措施停止应用程序。如捕获异常并调用exit()
问:你在哪里钓到的
答:在任何可能引发“致命”异常的线程堆栈上。有两种方法可以做到这一点:
- 在
方法、线程的main(String[])
方法等中放置一个try/catch(Throwable)run()
- 安装默认的未捕获异常处理程序
System.exit()
调用。这种方法导致了各种各样的问题,包括可重用性、单元测试,以及“为什么高效的应用程序又死掉了”
问:如果它已经被捕获了怎么办
答:应用程序可能无法自然退出的一个原因是,您的代码已经捕获到异常。。。偶然地例如:
try {
doSomething()
} catch (Exception ex) {
handle an IO exception
}
以上,一些无知/懒惰的程序员并没有费心考虑在代码> > DOWOMENT/<代码>中抛出的异常,并假定它们都是某种与IO相关的异常。但是如果异常实际上是意外的
NullPointerException
。。。或者更糟的事。。。然后代码就把它压扁了
解决这类问题的方法是代码审查和指导,以纠正程序员的坏习惯。。。希望在他对代码库造成太多破坏之前!如果你在你的代码库中发现了这种情况,你应该立即修复它。。。也可能是“grep”来修复类似的事件。正如其他人所说,捕获异常并调用
System.exit()
通常是正确的方法。但还有比这更重要的事情:
问:我真的需要抓住它吗
答:如果您的应用程序是传统的命令行应用程序,并且异常是在“主”线程上抛出的,那么您可能不需要捕获它。主线程上未捕获的异常将导致应用程序退出。。。如果不存在其他非守护进程线程。(事实上,任何线程都是如此……)
但是,如果您的线程有多个非守护进程线程,则需要采取措施停止应用程序。如捕获异常并调用exit()
问:你在哪里钓到的
答:在任何可能引发“致命”异常的线程堆栈上。有两种方法可以做到这一点:
- 在
方法、线程的main(String[])
方法等中放置一个try/catch(Throwable)run()
- 安装默认的未捕获异常处理程序
System.exit()
调用。这种方法导致了各种各样的问题,包括可重用性、单元测试,以及“为什么高效的应用程序又死掉了”
问:如果它已经被捕获了怎么办
答:应用程序可能无法自然退出的一个原因是,您的代码已经捕获到异常。。。偶然地例如:
try {
doSomething()
} catch (Exception ex) {
handle an IO exception
}
以上,一些无知/懒惰的程序员并没有费心考虑在代码> > DOWOMENT/<代码>中抛出的异常,并假定它们都是某种与IO相关的异常。但是如果异常实际上是意外的
NullPointerException
。。。或者更糟的事。。。然后代码就把它压扁了
解决这类问题的方法是代码审查和指导,以纠正程序员的坏习惯。。。希望在他对代码库造成太多破坏之前!如果你在你的代码库中发现了这种情况,你应该立即修复它。。。也可能是“grep”来修复类似的事件。建议“you should”应该改为“you can”。盲目地做出这样的更改实际上可能会使真正的问题变得更糟/更难发现。请注意,退出时通常会使用非零代码(如System.exit(1)),以表明退出是某个问题的结果,而不是虚拟机无事故地到达程序末尾。建议“您应该”如下所示“你可以”。盲目地做出这样的改变实际上可能会