【GO】恐慌处理

简介: 【GO】恐慌处理

咔咔博客恐慌处理

在PHP中加入我们有一个程序直接报错了,那么程序就有可能直接死了。但是在go里,我们可以简单地处理一下,就会继续执行剩余的程序

演示一个错误使用的案例

这是演示的一个错误的案例,程序执行到if判断就会执行程序恐慌。但是没有继续执行恐慌之后的程序


这个原因简单的思考一下就明白


跟着案例我们缕一遍思路


  • 首先程序会先运行 输入咔咔博客地址这一步
  • 然后进行判断用户输入的与定义的值是否相等
  • 如果不相等就会直接走Error方法报出恐慌
  • 然后是不会在次执行 输入咔咔博客地址的,他是会执行剩余的程序,不是重复执行程序

image.png

屏幕快照 2022-05-18 下午11.16.43.png

package main
import "fmt"
type Person48 struct {
}
func (p *Person48) Error() {
  panic("程序恐慌")
}
func main() {
  //defer func() {
  //  if err := recover(); err != nil {
  //    fmt.Println("恢复程序继续执行")
  //  }
  //}()
  //fmt.Println("请输入咔咔博客的地址")
  //blogAddress := "blog.fangkang.top"
  //fmt.Scan(&blogAddress)
  //if blogAddress != "blog.fangkang.top" {
  //  person48 := new(Person48)
  //  person48.Error()
  //}
  test()
  fmt.Println("恐慌后需要执行的程序")
}
func test() {
  defer func() {
    if err := recover(); err != nil {
      fmt.Println(err)
    }
  }()
  fmt.Println("请输入咔咔博客的地址")
  blogAddress := "blog.fangkang.top"
  fmt.Scan(&blogAddress)
  if blogAddress != "blog.fangkang.top" {
    person48 := new(Person48)
    person48.Error()
  }
}
目录
打赏
0
0
1
0
14
分享
相关文章
Go并发优化的9大技巧,效果立竿见影
Go并发优化的9大技巧,效果立竿见影
497 0
你知道 GO 中的 协程可以无止境的开吗?
你知道 GO 中的 协程可以无止境的开吗?
130 0
|
9月前
|
Go Goroutine 究竟可以开多少?(详细介绍)
Go Goroutine 究竟可以开多少?(详细介绍)
120 3
|
9月前
|
Go 并发
Go 并发
42 3
|
10月前
|
关于我想写一个Go系列的这件事
本文是Go语言专栏的开篇,作者sharkChili分享了他对Go语言的喜爱,并简要介绍了如何在Windows和Linux上搭建Go环境。文章包括下载安装包、解压、配置环境变量等步骤。此外,还展示了编写并运行第一个"Hello, sharkChili"的Go程序。最后提到了Go项目的`.gitignore`文件示例,并鼓励读者关注作者的公众号以获取更多Go语言相关的内容。
80 0
Go死码消除
Go死码消除
115 0
Go sync.Once:简约而不简单的并发利器
我是陈明勇,本文将详细介绍 Go 语言中的 sync.Once,包括它的基本定义、使用场景和应用实例以及源码分析等。在实际开发中,sync.Once 经常被用于实现单例模式和延迟初始化操作。
259 0
Go sync.Once:简约而不简单的并发利器
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等