当前位置: 首页 > wzjs >正文

天津b2b网站建设价格百度竞价价格查询

天津b2b网站建设价格,百度竞价价格查询,建网站的意义,本地开发app的公司更多个人笔记见: github个人笔记仓库 gitee 个人笔记仓库 个人学习,学习过程中还会不断补充~ (后续会更新在github上) 文章目录 自己创建错误panic和recover基础示范panic的返回用于保证g()函数…

更多个人笔记见:
github个人笔记仓库
gitee 个人笔记仓库
个人学习,学习过程中还会不断补充~ (后续会更新在github上)

文章目录

    • 自己创建错误
    • panic和recover
        • 基础示范
        • panic的返回
            • 用于保证g()函数执行的中间件
        • panic和recover的嵌套顺序
            • 打印最先 panic
            • recover 捕获最近 panic

自己创建错误

error 信息可以自己定义

func main() {arg := 2arg2 := 4err := makeTea(arg)if err != nil {fmt.Println(err)}err2 := makeTea(arg2)if err2!= nil {fmt.Println(err2)}
}//两种创建错误的方式
func makeTea(arg int) error {if arg == 2 {return fmt.Errorf("no more tea available")} else if arg == 4 {return errors.New("no more power available")}return nil
}

panic和recover

基础示范

panic 会报错然后程序返回,recover 结合defer 放在最后匿名函数中执行用于接受 panic

package mainimport ("fmt"
)func mayPanic() {panic("a problem") //手动 panic
}
func main() {defer func() {if r := recover(); r != nil {fmt.Println("成功接收Recovered. Error:\n", r)}}()mayPanic()fmt.Println("After mayPanic()") // won't output
}
//output:
//成功接收Recovered. Error:
//a problem
panic的返回

通过嵌套函数理解返回方式

func a(){defer fmt.Println("defer a")b()fmt.Println("after a")
}
func b(){defer fmt.Println("defer b")c()fmt.Println("after b")
}
func c(){defer fmt.Println("defer c")panic("this is a panic")fmt.Println("after c")
}func main() {a()
}
// defer c
// defer b
// defer a
// panic: this is a panic

修改b部分:可以保证回到a

func b() {defer func() { //变为立即执行的函数fmt.Println("defer b")if x := recover(); x != nil {fmt.Println("run time panic: %v \n", x)}}()c()fmt.Println("after b")
}
//defer c
// defer b
// run time panic: %v 
//  this is a panic
// after a
// defer a

能回到 A 就会先打印出 after a 然后再结束就打印出 defer a

用于保证g()函数执行的中间件
func protect(g func()) {defer func(){log.Println("done")if x:=recover();x!=nil{log.Printf("run time panic:%v",x)}}()log.Println("start")g()   //执行g   如果有问题会返回上去的
}
panic和recover的嵌套顺序
打印最先 panic

如果在defer调用的函数中也有panic,会打印最早的panic (没有recover的时候

func main() {a()
}func a() {defer b()panic("a panic")
}func b() {defer fb()panic("b panic")
}func fb() {panic("fb panic")
}
// panic: a panic
// panic: b panic
// panic: fb panic

这个例子中,先 panic a 然后调用 b,继续向下迭代

recover 捕获最近 panic
func main() {defer catch("main")  //增加捕获a()
}func catch(name string) {if r := recover(); r != nil {fmt.Println(name, "recover:", r)//println会打印地址}
}func a() {defer b()panic("a panic")
}func b() {defer fb()panic("b panic")
}func fb() {defer catch("fb")    // //增加捕获panic("fb panic")
}// fb recover: fb panic
// main recover: b panic

执行顺序: a 中 panic ->defer 调用 b ->b 中 panic->调用 fb->fb
中 panic->defer 调用 catch,抓住的是 fb panic ->回到 main 中 defer->抓住的是b panic (因为 fb 的 panic 已经被捕获,会向前推)

http://www.dtcms.com/wzjs/181040.html

相关文章:

  • 建行个人网站网站推广方法有哪些
  • 个人网站 公安备案青海百度关键词seo
  • iis7.5网站配置重庆做优化的网络公司
  • 建设公司网站标题怎么制作一个自己的网站
  • 可以做动态图表的网站seo公司广州
  • 杂志网站建设方案搜索引擎优化哪些方面
  • notepad做网站技巧seo中国
  • 承德市网站建设公司培训seo去哪家机构最好
  • 深色调网站好用的搜索引擎
  • 手机网站推荐哪个好如何软件网站优化公司
  • 青岛正规品牌网站制作策划百度seo排名优化公司哪家好
  • 网站建设连接数据库百度电话怎么转人工客服
  • 站长工具传媒自动推广软件免费
  • 河北省住宅和城乡建设厅网站哈尔滨最新疫情
  • 浏览器怎么连接网站的关键词优化怎么做
  • 成都电商网站开发公司网络营销的目的是什么
  • 南宁市住房建设局网站网奇seo赚钱培训
  • 银河星宇 网站建设谷歌海外推广
  • 广州哪里有做网站十大网站管理系统
  • 网站设计思路文案范文下载百度搜索
  • ppt做会动彩字网站白云区新闻
  • 辽源市建设局网站搜索引擎优化的方式有哪些
  • h5微网站建设多少钱注册公司流程和费用
  • b2c所有网站百度问答优化
  • 事业单位网站建设计划深圳网站页面设计
  • 做策划的人经常浏览的网站网站推广软件哪个好
  • 怎么查询菠菜网站做没作弊最简单的网页制作
  • 南宁网站制作超薄网络市场推广seo职位描述
  • 网站开发流程主要分成什么外贸电商平台哪个网站最好
  • o2o网站开发公司做网站找哪个公司好