加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:10:12 所属栏目:Java 来源:网络整理
导读:考虑一些可以引发检查异常的代码(类型为 Exception 的例外).当然,您的代码会捕获异常.你不仅仅是吞下这个例外,你的代码也会以某种方式通过用户界面向用户报告.在日志文件中,或者使用GUI弹出窗口. 您向用户报告的文本是否包含异常的消息文本.那是 Throwable.g
考虑一些可以引发检查异常的代码(类型为 Exception的例外).当然,您的代码会捕获异常.你不仅仅是吞下这个例外,你的代码也会以某种方式通过用户界面向用户报告.在日志文件中,或者使用GUI弹出窗口.

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

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

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读