相关疑难解决方法(0)

您是否应该报告例外的消息文本?

考虑一些可以抛出已检查异常的代码(类型异常Exception).catch当然,你的代码是个例外.您不仅要吞下异常,您的代码也会通过您的用户界面以某种方式向用户报告.或许在日志文件中,或使用GUI弹出窗口.

您向用户报告的文本是否应包含例外的消息文本.也就是说,通过提供的文本Throwable.getMessage()Throwable.getLocalizedMessage()

我想不是,但似乎很多人不同意我的意见.那我错了什么?我的论点如下.

  • 抛出异常时创建了消息.因此,它最多只能提供非常低级别的信息,这可能不适合向用户报告.
  • 从哲学上讲,在我看来,使用这个消息反对整个异常点,即将错误处理(throw部分)的检测和启动与处理和报告的完成(部分)分开catch.使用该消息意味着该消息必须适合于报告,这将报告的责任转移到应该仅负责检测和启动的位置.也就是说,我认为getMessage()设计的一部分Throwable是错误的.
  • 邮件未本地化.尽管它的名字,但是getLocalizedMessage()不是很好,因为你可能不知道你想要使用什么语言环境,直到你catch的异常(报告转到你的英语系统管理员读取的系统日志,或者是否在窗口弹出GUI的法国用户?).
  • 我听说Java 7有一个大大改进的异常层次结构IOException,使您能够处理不同catch子句中的不同类型的I/O错误,使getMessage()文本不那么重要.这意味着即使Java设计师也有点不舒服getMessage().

我不是在询问报告堆栈跟踪是否有用.堆栈跟踪仅对建议错误的异常有用.也就是说,对于未经检查的异常.我认为在这种情况下提供异常消息的低级细节不仅有用而且是强制性的.但我的问题涉及已检查的异常,例如file-not-found.

java logging exception

12
推荐指数
3
解决办法
4290
查看次数

标签 统计

exception ×1

java ×1

logging ×1