微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 你应该报告异常的消息文本吗?

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

您向用户报告的文本是否包含异常的消息文本.那是Throwable.getMessage()还是Throwable.getLocalizedMessage()提供的文字

我认为不是,但似乎很多人不同意我的看法.那么我有什么错误?我的论点如下.

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

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

解决方法

不,异常不应该直接在错误消息中直接显示用户,他们是低级别的技术细节,用户几乎总是想要一些更易于理解的东西,即使它不提供与堆栈跟踪一样多的信息!

几乎总是因为有些情况(如IDE),您可以认为您的用户在技术上有足够的能力来查看堆栈跟踪;确实在这种情况下,他们可能会更喜欢它的“倾倒”错误信息.

然而,我个人认为,堆栈跟踪应该始终被记录在用户可以访问的地方,以便如果他们抱怨“程序不工作”,您可以看到它们是如何发送给您的文件.

原文地址:https://www.jb51.cc/java/123294.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐