System.err和java.lang.Error之间有什么区别

时间:2015-01-28 13:58:53

标签: java error-handling

我是java的新手。我正在尝试用java实现会议室预订系统。我想将所有错误信息打印到提示符。

搜索后,我发现System.err.println("error 101")java.lang.Error("error 101")都可以创建错误并输出。

因此,我的问题是(1)它们之间有什么区别? (2)在实施系统时哪一个更有效?

2 个答案:

答案 0 :(得分:1)

这两个人彼此无关。

  

(1)他们之间有什么区别?

System.err是您可以写入的PrintStream,将输出到控制台的标准错误流,用于在控制台中运行的应用。

Error是一个错误类,对于程序可能无法恢复的严重错误,它是Throwable

  

(2)在实施系统时哪一个更有效?

“更有效”是一个非常模糊的术语。

在正常情况下,如果您的程序是命令行程序,则可能会向System.err 输出错误消息。您不太可能直接抛出Error或将其子类化;相反,对于例外条件,您可能会使用其中一个Exception类和/或派生自己的类。

我建议阅读上面链接的文档,还有Java Exceptions Tutorial,了解有关异常处理的更多信息。

答案 1 :(得分:0)

这是不同的事情。

System.err.println在错误流中打印一条消息。

java.lang.Error

  

错误是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题。大多数此类错误都是异常情况。 ThreadDeath错误,虽然是“正常”条件,但也是Error的子类,因为大多数应用程序不应该尝试捕获它。

就像一个不应该被捕获的例外。

所以这些思想不能在同一个背景下使用。