希曼日记

异常处理

使用defer+recover捕获panic处理 实例:

defer func() {
	if err := recover(); err != nil {
		println("错误:", err)
	}
}()

例子: 使用go开启协程异常处理, 如果某条协程出现问题时不影响主线程运行

package main

import (
	"fmt"
	"time"
)

func main() {
	go testErr()
	go fn1()

	time.Sleep(time.Second * 4)
}

func testErr() {
	defer func() {
		if err := recover(); err != nil {
			println("错误: ", err)
		}
	}()
	panic("err")
}

func fn1() {
	for i := 0; i < 5; i++ {
		fmt.Println(i)
	}
}