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")
}
发生异常的代码在另外一个协程