今日难度系数:????
习惯三十七:提供有用的错误信息
一、是什么?
老铁在使用软件的时候,突然给出了一个弹窗;弹窗的标题显示为“错误”,内容显示为“对不起!系统遇到错误将退出!”。
“What’smean?word哥”,老铁扶了扶自己的眼镜,暗自心里琢磨。
软件这样的错误提示信息,让老铁简直是丈二和尚摸不着头脑;因为这样的信息反馈根本无法帮助老铁解决任何问题。首先对自己的而言,用户不知道是自己的什么操作导致的错误,应该如何避免;其次用户对软件售后支持人员也无法描述该问题的更多细节。
二、为什么?
上述的错误发生时,是不是只要给用户弹窗一条优雅且带歉意的信息就足够了?根据我们上面的分析,这显然是远远不够的。
当然了,显示通用的信息,告诉用户发生了什么问题,要好过由于软件崩溃造成应用执行错误的动作,或者直接关闭。但是,类似“出错了”这样的信息,无法帮助软件最终用户解决软件使用问题,也无法帮助开发团队诊断问题的原因、解决出现该问题的根源。“出错了”这样的信息,益处在于开发人员在开发过程中已经对出错的问题进行捕捉并处理,但是处理得过于简单,没有为解决使用或开发问题提供更多的信息。
三、怎么做?
针对上述的问题,常用的解决方案是记录日志:1当发生问题时,让软件详细记录错误的相关信息;2但是只是记录还远远不够,我们还需要在日志信息中给用户足够的信息;比如,记录一下是哪条SQL查询或存储过程发生了错误;这样可以帮助开发人员很快找到问题并修复;但是在生产系统中,如果弹出太过计算机专业术语的信息,这样可能会“吓”着用户。
一般地,在弹窗信息中,一方面要给软件使用用户提供清晰、易于理解的问题描述和解释,明确地告诉用户软件当前发生了什么问题,应该怎么办。另一方面,还要提供具备关于错误的详细技术细节,这样方便开发人员寻找代码中的真正问题之所在,这些信息可以以超链接的形式存在,因为这些信息不需要直接暴露给最终用户,只需要能指引用户找到或打开引起该问题的详细技术细节即可(软件用户如果需要的话,比如反馈给软件技术支持人员)。
日志除了包括出现问题的详细数据外,日志中记录的信息还可以包括当时系统状态的一个快照。
在日志中描述错误信息时候,针对不同的错误类型可以为不同的受众提供更加合适的建议:
程序缺陷。这些是真正的bug,比如NullPointerException等。软件用户或系统管理员基本对此束手无策。
软件运行环境问题。该类问题包括数据库连接失败,或者无法连接远程服务、磁盘空间满、权限不足等。程序员对此束手无策,但是用户可以去向系统管理员寻求帮助。
用户操作错误。程序员和系统管理员不必担心这些问题。在告知是哪个或哪些操作的问题后,用户可以重新来过。
从习惯37中,我们可以得到:
像“无法找到文件”这样的错误信息,就其本身而言无助于解决问题;“无法打开/home/laotie/private.xml文件以供读取”这样的提示信息更加有效。
没有必要等待抛出异常来发现问题。在代码关键点使用断言以保证前置条件是否满足;当断言失败时,要提供与异常报告同样详细的信息。
在记录日志提供更多信息的同时,不要泄露个人隐私、商业秘密等。
提供给用户的信息可以包含一个主键,以便于在日志文件或是审核记录中定位相关内容。
、转发分享就是 的支持与打赏。如果想了解更多软件开发技术与人生感悟分享,请长按图片,程序员chatbook。同时欢迎并感谢大家把文章进行分享,和您的小伙伴共同进步。
程序员Chatbook
程序员都了,来不及解释,长按图片,快上车
读到这里的,都是老铁了,奉上每日一句,与君共乐、共勉!
每日一句
知识需要反复探索,土地需要勤劳耕耘。
——尼泊尔谚语
这是每周陪你读点书的第二本书——《高效程序员的45个习惯》,该书由人民邮电出版社出版,VenkatSubramaniamAndyHunt著,钱安川、郑柯译。如有原书需求,请自行购买。
老铁们临走点下方留个手印—独行快,众行远。
赞赏
长按向我转账
受苹果公司新规定影响,iOS版的赞赏功能被关闭,可通过转账支持。
治疗白癜风的好医院北京白癜风怎么治疗