基础技能树-18 错误处理

小说:兼职模特需要交钱吗作者:宗龙开更新时间:2019-02-21字数:70654

史思明大军就像野(性)大发的狼群,他们的杀戮(欲)望被彻底激发了,磨刀赫赫,向恒州猛扑而去。

早安兼职平台靠谱吗

柳梦婷突然将自己身上的长袍扯掉,在此之前,她身上一直都是裹着一条和旗袍似地长袍。这里是南半球,现在是冬天,她撤下旗袍之后,里面穿的竟然是比基尼。
“胜负不到最后一刻往往谁知道,如果你们两个是这么认为的话,那么总有一天会死在你们这种惯性思维和无知上。”千手纲手嘲讽的说道,让黑土和黄土脸色有点难看,不过他们不是白痴,他们当然知道和纲手之间的差距。

“哈哈!”纪太虚听到这话笑了笑说道:“也是也是,是我疏忽了,我本来就应当是亲自去接她的!也好,忠叔,我亲自去挑选聘礼,亲自去九江。”纪太虚说完之后又笑了一声便起身走了。

本节内容

  • 错误分类
  • 错误(异常)是一种“值”,属于正常逻辑返回(exception,error)
  • 使用实例或类型判断错误类别,而非“魔法数字”。(编译器检查、重构、常量陷阱)

错误分类

什么叫错误?通常情况下我们把错误分成两类,一种是可恢复的,一种是不可恢复的。

不可恢复的是彻彻底底的错误,比如说链接数据库服务器网络有问题或者数据库服务器宕机,这种情况下我们应用程序没有办法让这种状态恢复,遇到这种不可恢复的错误我们通常让程序直接崩溃,打印输出错误堆栈。因为这种错误不可恢复情况下程序挂在那里没什么意义,最好方式让你出错,监控程序对出错返回值来做出处理,比如说对管理员做出预警,管理员查看调用堆栈信息进行排查。如果你程序什么都不做,就挂在那里一直等一直等,那管理员就不知道程序是正确还是错误。因为程序不挂掉的话,管理员不知道你程序什么状态。或者说管理员可以看数据库服务器挂了没有,但如果数据库服务器不是在同一个公司呢?你的监控程序只监控自己程序不监控数据库呢?所以你得搞清楚,你的程序是否出错误信息和你依赖的东西是否被监控不是一回事。当你遇到不可恢复错误的时候,最好的方式不是隔一段时间去重试而是让自己挂掉,通过你输出的调用堆栈信息和错误信息还是返回的状态码给监控系统明确的指示我挂掉了,然后管理员通过接受报告,从中排查到底什么原因挂掉。当它恢复的时候,选择一种触发机制让你的程序执行。这时候默默的重试在管理员眼里没有出错,管理员根本不知道你干什么。你说我可以打印一些信息,打印信息和程序挂掉对于监控系统完全是两种状态,除非你的监控系统专门针对你的打印信息做出处理。当你的进程挂掉,是个监控系统都可以知道。对于不可恢复的错误你究竟使用什么样的策略去处理。

可恢复性错误,比如说有一个除法,这种错误可以恢复的,最简单的,拦截这个错误通知调用方换一个参数。

错误(异常)是一种“值”,属于正常逻辑返回(exception,error)

比如说登录时候返回的各种状态。比如有正确,用户名不存在,密码错误,账户过期,账户禁用。返回值用什么最合理。这东西还是错误么,显然不是错误而是很标准的返回值。

所以很多时候错误其实很标准的返回值,表达的另外的一种状态。我们用error就是一个自定义exception。无非一个是简单变量一个是复合变量。很显然这时候错误是个正常状态值,用错误来称呼异常实际上是不合理的。虽然说这两个词都代表着负面含义,负面含义并不意味着就是错误。我们认为登录失败是很正常的状态,属于正常逻辑的一部分。

使用实例或类型判断错误类别,而非“魔法数字”。(编译器检查、重构、常量陷阱)

这时候我们通常做法有几种选择,像go语言不支持结构化异常时候,我们通常会使用变量来做,因为变量默认情况下会实现一个接口,要么实现error接口,要么实现自定义类型。我们判断返回值错误的时候可以通过第一种err == errVar来判断某个具体的错误,第二种type(err) is IO来判断属于哪一类的错误,很显然选择什么样的错误类型是很讲究的。使用常量还是使用变量也很有讲究的。

raise Exception()的好处在不同函数中拦截,也就意味着对异常的处理会很灵活。使用返回值的话只能在你调用的地方做判断。这是结构化异常很大的好处,因为这样的话可以用类似装饰器的东西捕获异常,因为在调用堆栈任何一个环节都能捕获。所以说这时候还有的好处是比如说我们写Web应用的时候通常是client端发送request,然后web server有个程序对这个请求做handler,执行你的logic,可能有db,最后去返回。这种程序最常见的这种状态。这样我们可以在中间捕获错误信息包括异常,捕获信息可以扔到log中,同时为了返回正常的状态,我们还可以重新抛出异常。

对于错误的处理并不是说这个错误是不想要的状态,错误是很正常的返回值,我们可以利用错误控制我们的执行流程。异常也好错误也好,它未必是表达你不想要的东西,它是一种很合理的状态值,是一种很合理的流程控制。在写代码时候完全可以当作正常逻辑来使用,当作正常流控制来使用。

尽可能避免使用魔法数字。

编辑:石董宗

发布:2019-02-21 00:31:42

当前文章:http://ayzwzx.cn/news/20190187220.html

天猫超市佣金比例 深圳必胜客兼职服务员一小时价格 太仓阳光人才网有日结工吗 养老院招聘食堂洗碗工电话 林志颖代言的网嫌怎么赚钱 网上干什么能赚钱 苹果手机怎么兼职赚钱 花生日记代理怎么分享

43523 78753 21359 93827 78469 2278672913 53581 32984

我要说两句: (0人参与)

发布