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

营销型网站如何策划长沙自助建站平台

营销型网站如何策划,长沙自助建站平台,西安制作公司网页多少钱,一学一做动漫视频网站recover 使用panic抛出异常后, 将立即停止当前函数的执行并运行所有被defer的函数#xff0c;然后将panic抛向上一层#xff0c;直至程序crash。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃#xff0c;recover只有被defer后才是有意义的。 func main() { p… recover 使用panic抛出异常后, 将立即停止当前函数的执行并运行所有被defer的函数然后将panic抛向上一层直至程序crash。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃recover只有被defer后才是有意义的。 func main() { print(123) print(456) panic(throw an error) print(678) //IDE会有提示: Unreachable code} 结果: 123456panic: throw an errorgoroutine 1 [running]:main.main()    /Users/shuangcui/explore/panicandrecover.go:31 0x67 使用recover()捕获异常: func main() { print(123) defer func() {  if err : recover(); err ! nil {   print(recover it)  } }() print(456) panic(throw an error) print(678) //IDE会有提示: Unreachable code} 结果为: 123456recover it 如果有两个recover,则捕获异常的是后一个 func main() { print(123) defer func() {  if err : recover(); err ! nil {   print(recover it)  } }() defer func() {  if err : recover(); err ! nil {   print(复原!)  } }() print(456) panic(throw an error) print(678) //IDE会有提示: Unreachable code} 结果为: 123456复原! panic之后的任何代码都不会继续执行 前提是panic不在if里面 package mainimport fmtfunc main() { defer_call() fmt.Println(333 Helloworld)}func defer_call() { defer func() {  fmt.Println(11111) }() defer func() {  fmt.Println(22222) }() defer func() {  if r : recover(); r ! nil {   fmt.Println(Recover from r : , r)  } }() defer func() {  fmt.Println(33333) }() fmt.Println(111 Helloworld) panic(Panic 1!)    //使用panic抛出异常后, 将立即停止当前函数的执行并运行所有被defer的函数然后将panic抛向上一层, 直至程序crash    //但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃recover只有被defer后才是有意义的。 panic(Panic 2!) //panic1之后的panic2没有任何机会会被执行, panic2之后的任何代码更没有任何机会被执行 fmt.Println(222 Helloworld)} 输出为: 111 Helloworld33333Recover from r :  Panic 1!2222211111333 Helloworld 对于goroutine中的panic,协程外面的recover是无法恢复的goroutine中的recover,同样无法恢复协程外的panic 但协程中的recover可以恢复协程中的panic package mainimport ( fmt time)func main() { go func() {  defer func() {   if err : recover(); err ! nil {    fmt.Println(recover err:, err)   }  }()  panic(里面出错了) }() //panic(外面出错了) time.Sleep(1 * time.Second)} 输出为 recover err 里面出错了 主方法中的recover,也可以恢复子方法里的panic 但如果go subfunc(),则同样无法捕获subfunc中的异常 func main() { fmt.Println(123) defer fmt.Println(999) defer func() {  if err : recover(); err ! nil {   fmt.Println(恢复异常:,err)  } }() subfunc()}func subfunc() { defer fmt.Println(888) panic(出现了bug) defer fmt.Println(456)} 结果为: 123888恢复异常: 出现了bug999 因为panic发生的时候panic函数后面的语句都不会执行了所以recover函数不能放在panic语句后面执行而要放在defer函数中执行。 使用 panic 抛出异常后函数执行将从调用 panic 的地方停止如果函数内有 defer 调用则执行 defer 后边的函数调用如果 defer 调用的函数中没有捕获异常信息这个异常会沿着函数调用栈往上传递直到 main 函数仍然没有捕获异常将会导致程序异常退出 如何区别使用 panic 和 error 两种方式 惯例是导致关键流程出现不可修复性错误的使用 panic 其他使用 error 。 panic 和 recover 的组合有如下特性 有 panic 没 recover 程序宕机。 有 panic 也有 recover 程序不会宕机执行完对应的 defer 后从宕机点退出当前函数后继续执行。 recover能捕获所有错误吗 不能 Go 有哪些无法恢复的致命场景 像 并发读写 map fatal error: concurrent map read and map write 堆栈内存耗尽(如递归) runtime: goroutine stack exceeds 1000000000-byte limitruntime: sp0xc0200e1bf0 stack[0xc0200e0000, 0xc0400e0000]fatal error: stack overflow 将 nil 函数作为 goroutine 启动 fatal error: go of nil func value goroutines 死锁 fatal error: all goroutines are asleep - deadlock! 线程超过设置的最大限制 fatal error: thread exhaustion 超出可用内存 fatal error: runtime: out of memory 总之 都会报fatal error:xxxxxxxx 拓展参考: golang panic和recover 实现原理[1] Go 学习笔记19— 函数05[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系][2] Go 语言踩坑记——panic 与 recover[3] 参考资料 [1] golang panic和recover 实现原理: https://blog.csdn.net/u010853261/article/details/102761955 [2] Go 学习笔记19— 函数05[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]: https://blog.csdn.net/wohu1104/article/details/105571916 [3] Go 语言踩坑记——panic 与 recover: https://xiaomi-info.github.io/2020/01/20/go-trample-panic-recover/ 本文由 mdnice 多平台发布
http://www.hkea.cn/news/14256868/

相关文章:

  • 梧州市网站建设html网页制作模板代码
  • 建设企业网站有哪些东营网站建设规划书
  • 做农产品的网站名称长春火车站哪个区
  • 网站模板化郑州高端品牌网站建设
  • 中心城网站建设成都展厅设计公司
  • ci框架建设网站案例小程序制作119
  • 平湖网站制作制作个人业务网站
  • 国外翻墙设计网站如何才能让自己做的网站百度能搜
  • 甘肃网站seo技术厂家wordpress页面调用分类文章
  • 扬中网站建设推广在线生成器免费
  • 网站开发财务猪八戒网站怎么做任务
  • wordpress一句话木马网站的后续优化方案
  • 零基础网站建设教程com域名注册接口
  • 做刷网站海洋网络推广效果
  • 博山做网站公司上海网站商城建设公司
  • w微信网站开发c 网站开发数据库连接
  • 深圳签网站口碑营销话题
  • o2o网站wordpress斜杠
  • 广州网站建设设计公司手机网页打不开是什么原因
  • 如何选择电商网站建设wordpress 内容 管理
  • 办网站租服务器做旅游攻略的网站
  • 建行网站会员是什么logo在线设计制作
  • 律所网站建设国队男子接力赛上海公司建立网站吗
  • wordpress软件站主题兰州网站建设专家
  • 西宁公司网站设计线上营销方法有哪些
  • 深圳知名网站建设平台dedecms5.7装饰公司网站模板
  • 网站建设能赚多少钱网站内容建设和管理
  • 网站建设投标文件如何网推
  • 重庆网站建设公司招聘前端直播网站怎么做
  • 陕西榆林市信息网站建设公司兰州 网站建设公司