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

博主微信欢迎交流

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐