【问题标题】:What is the difference between System.err and java.lang.ErrorSystem.err 和 java.lang.Error 有什么区别
【发布时间】:2015-01-28 13:58:53
【问题描述】:

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

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

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

【问题讨论】:

  • 这些是完全不同的类型

标签: java error-handling


【解决方案1】:

两者没有任何关系。

(1)它们有什么区别?

System.err 是一个PrintStream,您可以写入该地址将输出到控制台的标准错误流,以供在控制台中运行的应用程序使用。

Error 是一个错误类,它是一个Throwable,表示程序可能无法从中恢复的严重错误。

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

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

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

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

【讨论】:

  • 感谢您的回答。我的会议室预订系统是一个命令行程序。你的意思是我只需要使用System.err 输出错误信息?你认为我需要创建一个存储各种错误消息的错误类吗?
  • @allenwang:这完全取决于你。
【解决方案2】:

那是不同的事情。

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

java.lang.Error

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

就像一个不应该被捕获的异常。

所以这些想法不能在相同的上下文中使用。

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    • 2013-08-19
    相关资源
    最近更新 更多