Var*_*arV 17 java exception-handling errorlevel
我有一个单线程应用程序,如果出现问题,应将DOS错误级别设置为非零值.抛出RuntimeException或使用System.exit(非零)更好吗?我不需要堆栈跟踪,我不希望这个应用程序被扩展/重用.这两个选项有什么区别?
Dav*_*d Z 10
除非你确实有特殊情况,否则不要抛出异常.System.exit(int)正是因为这个原因.用它.
编辑:我想我可能误解了你的问题.我想你是在问,当你想要正常退出JVM但是发出一些不太正确的信号时,抛出异常或使用是否更好System.exit.
但是,如果出现的问题是已经由Java异常指示的问题,那么只是让该异常无法处理.您不必捕获异常并致电System.exit.
如果您可以选择是否抛出自己的异常或调用System.exit,请考虑错误条件是否可能由某些调用方法的Java代码处理.如果错误直接发生在main方法中,则可能永远不会有调用者来处理异常,因此您可能应该调用System.exit.否则,通常最好抛出异常 - 但不是RuntimeException,您应该使用适当表示您遇到的错误的异常类型.RuntimeException如有必要,编写自己的子类.
通常在这种情况下,我会在main方法中处理所有异常,可能是通过调用System.exit.这使您可以灵活地处理异常条件的位置/是否/如何处理,同时仍然满足您使用错误代码终止的需要.特别是,它使您可以控制返回代码以及可能为用户生成的任何其他输出(错误消息,堆栈跟踪等).如果在main中抛出异常(或让异常转义),则会失去该控件.
总而言之,System.exit只在您的顶级异常处理程序中调用:
static public void main() {
try {
runMyApp();
} catch (Exception e) {
System.exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17333 次 |
| 最近记录: |