use*_*460 16 c++ java return exit
当我们在学校学习C++时,我们的教授会告诉我们return 0;
在主函数的最后一行代码中写一下,它被认为是一个很好的编程实践.
在Java中,我意识到有些人System.exit(0);
在main方法的最后一行写道.
然而,在C++中,如果我使用exit(0);
我受到我的教授的惩罚,因为(在学校)进行程序编程,我们应该让程序流到主要结束并让程序自然停止.
我的问题:Java是否System.exit(0);
与C++相似return 0;
?(或者它与C++类似exit(0)
)
System.exit(0)
在不需要的时候在java中使用是不好的做法(即:在main方法的最后一行写它)?
dan*_*n04 16
Java的System.exit(0)
是像C++的exit(0)
在
后一点使它成为学术类型倾向于皱眉的"非结构化"控制流构造.(在这种情况下,他们有一个很好的理由:如果一个函数通过异常(或老式的返回代码)报告失败,调用者可以从错误中恢复,但exit
烧掉那个桥.当然,有时候错误确实需要被视为致命错误.)
在C++中,return 0
等同于exit(0)
它在main
函数中.(在其他功能中,它并不意味着什么特别的.)
这里C++和Java之间的相关差异是返回类型main
.
main
必须返回int
.通常情况下,这意味着它必须有一个return
语句,但是如果你不写一个语句,那么C++标准会产生main
一个特殊情况,其中隐含return 0;
为end.main
必须返回void
.在C++中,编写return
语句是很常见的main
,即使它在技术上是多余的,与程序中所有其他非void
函数的风格一致.
在Java中,您不能return
使用退出代码,main
因为它是一个void
函数.因此,如果要显式指定退出代码,则必须使用System.exit
.
结束每个Java 函数并没有错,但除非你有一个像这样的结构,否则这样做并不是惯用的main
System.exit(0)
public static void main(String[] args) {
try {
//... do the work
System.exit(0);
} catch (Throwable t) {
//... report the error
System.exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
在Java System.exit(0),System.exit(1)中,System.exit(-1)用于知道程序的执行是好还是坏.0
执行正常时使用.1, -1, whatever != 0
发生某些错误时,您可以针对不同类型的错误使用不同的值.
你也可以这样说:
0 意味着一切都好
1 意味着我期待出错的东西出了问题
-1表示我没想到会出错的东西
在Java文档说:
该参数用作状态代码; 按照惯例,非零状态代码表示异常终止.
是Java的System.exit(0); 类似于C++的返回0; ?
是的他们俩都很相似.
在不需要的时候在java中使用System.exit(0)是不好的做法
我不会说这是一个不好的做法,但是你应该知道何时使用它以及在哪里使用它.您可以使用它通过退出代码为命令行工具抛出错误,而不是抛出异常.System.exit(0)
终止JVM所以你应该非常确定在哪里使用它.
一个例子:
try {
runTheWholeApplication();
System.exit(0); // Signifying the normal end of your program
} catch (Throwable t) {
reportErrorSomehow(t);
System.exit(1); // Signifying that there is an error
}
Run Code Online (Sandbox Code Playgroud)
是的。Java 的方法System.exit(0);
是直接类似的,因为原型 Javamain
方法定义为
public static void main(String[] args) {
}
Run Code Online (Sandbox Code Playgroud)
所以它实际上不能return
(int
尽管它可以简单地return;
)。在 C++ 中你可以exit(0);
,这也是等效的。
归档时间: |
|
查看次数: |
12817 次 |
最近记录: |