如何理解Go错误处理之用panic取代rr != nil的模式

技术如何理解Go错误处理之用panic取代rr != nil的模式这篇文章主要介绍“如何理解Go错误处理之用panic取代rr != nil的模式”,在日常操作中,相信很多人在如何理解Go错误处理之用panic取代rr

本文主要介绍“如何理解Go错误处理中如何用恐慌代替rr!=nil模式”,在日常操作中,相信很多人都在努力理解Go错误处理中如何用恐慌代替rr!=对零的模式有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望回答“如何理解Go错误处理中如何用恐慌代替rr!”!=nil的模式“有帮助!接下来,请和边肖一起学习!

为什么想替换

在围棋语言中,如果出错!=nil写的太多,处理各种方法语句麻烦又不方便:

err :=foo()ifer!=nil{//dosomething.return err } err :=foo()ifer!=nil{//dosomething.return err } err :=foo()ifer!=nil{//dosomething.return err } err :=foo()ifer!=nil {//=nil{//dosomething.returnerr}}以上仍然是一个示例代码,非常简单。如果是在工程实践中,有必要跳各种包,有错就加!=nil,比较繁琐,要注意整个上下游。

其余的我就不细说了。可以关注我的微信官方账号,看以前的文章。

怎么替换 err != nil

错了就不想写了!=零,方法之一就是用恐慌代替他。

示例代码如下:

funcGetFish(db*sql。DB,name string)[]string { row,err:=db。查询(' selectnamefromuserswhere`name`=?',名字)iferr!=nil {恐慌(err)}延期。close()varnames[]string forrow。next(){ varnamestryrrr :=row。扫描(名称)iferr!=nil {恐慌(err)} name=append(name,name)} err=row。err()ifer!=代码=零:

func main(){ fish 2:=getfish(db,'炸鱼')fish:=getfish (db,'咸鱼')fish43360=getfish (db,'钓鱼').}同时,在使用死机模式转换到错误机制后,我们必须在外层添加recover方法:

functionapprecovery()gin。HandlerFunc{returnfunc(c*gin。context){ defer func(){ ifer :=recover();呃!=nil{if_,ok:=err。(Aper);好吧{//做点什么.} else {死机(err)}}} ()}}根据每次死机抛出的错误进行Asser,并识别是否是自定义的AppErr错误类型。如果是这样,可以采取一系列的处理动作。

否则,您会惊慌失措,继续将其抛出到顶部的Recovery方法进行处理。

这是一个相对完整的死机错误链接处理。

优缺点

就优势而言:

整体代码结构看起来更加简洁,只关注实现逻辑。

有错就没必要关注和写繁琐了!=零的错误处理代码。

就缺点而言:

随着认知负担的增加,每一个需要参与项目的新老学生都意识到了这种模式,需要做一个基本的规范或训练。

有一定的性能开销,每次死机都有用户模式下的上下文切换。

有一定的风险。一旦恐慌没有恢复,就会导致事故。

Go不是政府推荐的,这与恐慌本身的定义相悖,即恐慌的概念与错误混淆。

至此,关于“如何理解Go错误处理并用恐慌代替rr!=nil模式”已经结束,希望能解决大家的疑惑。理论和实践的结合可以更好的帮助大家学习,所以赶紧试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/39943.html

(0)

相关推荐

  • 如何分析OpenLayers3加载矢量地图源的问题

    技术如何解析OpenLayers 3加载矢量地图源的问题今天就跟大家聊聊有关如何解析OpenLayers 3加载矢量地图源的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可

    攻略 2021年12月23日
  • 世界四大文明古国是哪四个,世界四大文明古国是哪四国

    技术世界四大文明古国是哪四个,世界四大文明古国是哪四国:1、古巴比伦(位于西亚,今伊拉克); 2、古埃及(位于北非,今埃及); 3、古印度(位于南亚,地域范围包括今印度、巴基斯坦等国); 4、中国(位于东亚,今中华人民共

    生活 2021年10月20日
  • 笔记本电脑怎样截屏,笔记本电脑怎么选择性截图

    技术笔记本电脑怎样截屏,笔记本电脑怎么选择性截图电脑自带截图 我们的电脑其实本身就有截图功能,只是很多人不知道而已,今天小编就将电脑自带截图的使用方法分享给大家,希望对大家有所帮助笔记本电脑怎样截屏! 电脑的自带截图的使

    生活 2021年10月25日
  • 拓端tecdat:Python集成机器学习:用AdaBoost、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    技术拓端tecdat:Python集成机器学习:用AdaBoost、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化 拓端tecdat:Python集成机器学习:用AdaBoost、决策树、逻辑回

    礼包 2021年12月15日
  • 知识也是有质量的

    技术知识也是有质量的 知识也是有质量的关键字
    知识搬运工、知识提炼者、知识结晶、知识孤岛、知识宫殿
    何为知识搬运工
    知识搬运工是指那些通过阅读将作者的知识搬运到自己脑子里的一群人,他们不求理解,只求记忆

    礼包 2021年10月26日
  • MySQL应该学习的6件事是什么

    技术MySQL应该学习的6件事是什么本篇内容介绍了“MySQL应该学习的6件事是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月3日