【GO】恐慌处理

咔咔博客恐慌处理

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

演示一个错误使用的案例

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

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

跟着案例我们缕一遍思路

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

正确的使用案例

我们在面向对象那里学会了封装,我们把判断用户的信息放到另一个函数 main去调用执行 这个时候就会直接执行剩余的程序了
在这里插入图片描述

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()
	}
}

博主微信欢迎交流

在这里插入图片描述

发布了859 篇原创文章 · 获赞 131 · 访问量 67万+

猜你喜欢

转载自blog.csdn.net/fangkang7/article/details/105002436