day10 异常panic

panic 异常/恐慌

panic 产生异常

package demo

import "fmt"

func init() {
	fmt.Println("Exec Init 001")
}
func exec01() {
	/* 异常: 使用panic 处理异常 。 用的少,目的是为了减少 try catch 乱用*/

	// 主动出发 panic 函数
	panic("主动抛出 panic") // panic: 主动抛出 panic 。强制结束

}

recover 接收异常

package demo

import "fmt"

func init() {
	fmt.Println("Exec Init 002")
}

// 自定义  painc 抛出异常
func testPanicAndRecover() {
	defer func() {
		// 使用匿名函数方式。利用 recover 接收异常,并处理异常
		if err := recover(); err != nil {
			fmt.Println("recover err:", err)
			fmt.Println("main程序继续执行⬇️")
			fmt.Println("testPanicAndRecover 程序  不再继续执行🈲")
		}
	}()
	defer fmt.Println("执行 testPanicAndRecover ----1")
	defer fmt.Println("执行 testPanicAndRecover ----2")
	panic("主动抛出 testPanicAndRecover 错误")
	// panic 后续代码不再执行。
	// 使用recover 接收异常也不再执行后续代码
	defer fmt.Println("执行 testPanicAndRecover ----3")
	defer fmt.Println("执行 testPanicAndRecover ----4")
}

func Exec02() {
	/*  recover 接收异常, 必须和 defer 结合使用*/
	defer fmt.Println("执行 main ----1")
	defer fmt.Println("执行 main ----2")
	testPanicAndRecover()

	defer fmt.Println("执行 main ----3")

}

posted @ 2024-07-02 07:53  染指未来  阅读(4)  评论(0编辑  收藏  举报