recoverdeferdefermyLog.Panic
package main

import(
	"fmt"
	"bytes"
	"log"
)

func main(){
	var buff bytes.Buffer
	// 自定义一个日志对象
	// 默认的日志写入到buff中
	myLog := log.New(&buff, "", log.LstdFlags)
	// 写入日志
	myLog.Println("line 1")
	myLog.Printf("line %d", 2)
	myLog.Panic("log panic")
	
	defer func(){
		if err := recover(); err != nil{
			fmt.Println("err: ",err)
		}
	}()
}
将defer执行的函数移到前面
package main

import(
	"fmt"
	"bytes"
	"log"
)

func main(){
	defer func(){
		if err := recover(); err != nil{
			fmt.Println("err: ",err)
		}
	}()
	var buff bytes.Buffer
	// 自定义一个日志对象
	// 默认的日志写入到buff中
	myLog := log.New(&buff, "", log.LstdFlags)
	// 写入日志
	myLog.Println("line 1")
	myLog.Printf("line %d", 2)
	myLog.Panic("log panic")
}
发生异常的代码在另外一个协程