调节时起“Load 操作失败。远程服务器返回了左: NotFound”:

供有效之错误信息

——  高效程序员的 45 只习惯的习惯37

 

“不要吓着用户,吓程序员也特别。要提供被他们根本清爽的错误信息。要使类似‘用户错误。替换,然后继续。’这样让丁赏心悦目的词句。”

 

     
当使用发布以在真正世界中得到运用之后,仍然会生出这样那样的题材。比如计算模块可能出错,与数据库服务器之间的连天为或有失。当无法满足用户需求时,要坐淡雅的措施展开处理。

 类似的缪有常,是无是只要弹有同长优雅且带有歉意的信为用户就是足足了?并无尽然。当然了,显示通用的音信,告诉用户产生了问题,要好了由于系统崩溃造成采用执行错误的动作,或者直接关闭(用户会用觉得迷惑不解,并期待了解问题所在)。然而,类似“出错了”这样的音讯,无法增援组织本着问题做出诊断。用户以让支持组织打电话报告问题常常,我们意在她们提供足够多还吓的音信,以拉尽快识别问题所在。遗憾之是,用大通用的一无是处信息,是无力回天提供足够的数码的。

 针对这个问题,常用之解决方案是记录日志:当起问题常常,让以详细笔录错误的系数据。错误日志最起码应该坐文件文件之款型维护。不过可能可以发表暨一个网级别之轩然大波日志被。可以运用工具来浏览日志,产生负有日志信息的
RSS feed ,以及诸如此类的提携方式。

 记录日志很有因此,可是光这样做是不够的:开发人员认真剖析日志,可以抱需要的数目;但对此不幸之用户来说,起不顶任何辅助作用。如果展示让他俩好像下图
中的音信,他们要某些端倪都未曾 ——
不晓好到底做错了哟,应该怎么开足绕了这似是而非,或者在受技术支持打电话时,应该报告什么。

要是您放在心上的言语,在开发阶段就会觉察此题材之最初警告。作为开发人员,经常要以协调要为用户来测试新效能。要是错误信息很不便掌握,或者无助于定位错误的口舌,就好考虑实在的用户和支持团队,遇到这题目常常会有多困难了(见图
7-2 )。

澳门蒲京娱乐 1

希冀 7-2 无用的酷信息

 

譬如,假得登录 UI
调用了采取之中间层,后台向数访问层发送了一个要。由于无法连接数据库,数据访问层抛来一个十分。这个深被中间层之所以好的十分包裹起来,并持续开拓进取传递。那么
UI
层应该怎么开吗?它起码应为用户了解出了网错误,而休是由于用户之输入引起的。

 接下来,用户会打电话并且告诉我们他黔驴技穷登录。我们怎么理解问题之精神是什么啊?日志文件或者出无数单条目,要找到有关的底细颇窘迫。

 实际上,不妨以亮为用户之音遭受提供再多细节。好比说,可以视是哪条
SQL
查询或存储过程有了不当;这样好快找到题目同时修正,而不是荒废十分把的时光去盲目地碰运气。不过另一方面,在生产体系受,向用户展示数据连接问题之一定信息,不会见针对他们产生多百般襄。而且出或好他们同样过。

 一方面要提供给用户清晰、易于掌握的题材讲述和解释,使他们发生或寻求变通之法。另一方面,还要供有有关误的详实技术细节给用户,这样有利于开发人员寻找代码中确确实实的问题所在。

脚是同等栽而落实上述两单目的方式:图中显示了清的谬误说明信息。该错误信息不只是大概的公文,还包了一个超链接。用户、开发人员、测试人员都可由此链接得到重新多信息,如图
7-3 、图 7-4
所著。

 

澳门蒲京娱乐 2

图 7-3 带有更多细节链接的杀信息

 

澳门蒲京娱乐 3

贪图 7-4  供调试用的一体化详细信息

跻身链接的页面,可以看出那个(以及独具嵌套异常)的详细信息。在开发时,我们也许希望如果看这些细节就吓了。不过,当以进入生育体系后,就未能够拿这些底层细节直接暴露被用户了,而只要供链接,或是某些访问错误日志的输入。支持团队可以要用户点击错误信息,并宣读来左日志入口的连锁消息,这样支持团队可以快捷找到错误日志被的一定细节。对于单身系统来说,点击链接,有或会见将错误信息通过电子邮件发送到支撑部门。

 除了包出现问题之详尽数据外,日志被记录的信可能还有这网状态的一个快照(例如
Web 应用之对话状态)。 [ ① ]

 使用上述消息,系统支持团队可以重建起问题的体系状态,这样针对性找和修复问题充分管用。

 错误报告对于开发人员的生产率,以及最后的支持移动消耗资金,都来酷挺的熏陶。在出进程遭到,如果一定及修补问题被人口加倍于黄,就考虑采取进一步积极主动的错误报告方式吧。调试信息非常难得,而且是获得。不要任意将该丢。

 

显示中的错误信息供更便于查找错误细节的计。发生问题时常,要显示起尽可能多的支撑细节,不过别让用户陷入其中。

 

 

分错误类型

次瑕疵。 这些是确实的 bug ,比如 NullPointerException
、缺少主键等。用户要系统管理员对这束手无策。 

 

条件问题。 该品种包括数据库连接失败,或是无法连接远程 Web Services
、磁盘空间满、权限不足,以及近似的题材。程序员对这并未答复之策,但是用户或得找到变化之点子,如果提供足够详细的音,系统管理员应该好解决这些题材。

用户错误。
程序员与系统管理员不必顾虑这些题目。在报告是乌操作的题材后,用户可以重复来了。

通过追踪记录报告的谬误类型,可以吧受众提供更加合适的提议。

 

切身感受

错误信息有助于问题之化解。当问题发出常,可以详细研究问题的细节描述和有上下文。

平衡的艺术

  • 比如“无法找到文件”这样的错误信息,就该本身而言无助于问题之解决。“无法打开
    /andy/project/main.yaml 以供应读取”这样的音重新管用。
  • 从未必要待抛来怪来发现题目。在代码关键点使断言以管一切正常。当断言失败时,要供与生报告同详细的信息。
  • 当提供再多信息之还要,不要泄露安全信息、个人隐私、商业机密,或其它敏感信息(对于因
    Web 的采用,这或多或少进一步关键)。
  • 提供给用户之信息可以蕴涵一个主键,以便让当日记文件或者审核记录受固定有关内容。

 


[ ① ]  
有些安全敏感的信不应该于爆出,甚至不可以记录到日志澳门蒲京娱乐中错过,这其中包密码、银行账户等。

 

澳门蒲京娱乐 4

 

 

一定要顾是错误之前的失实是啊?基本就是用户Cookie的题材,用户并未登录。

有时候要装成Any CPU

偶然又编译Silverlight项目,问题迎刃而解。