defer推迟 recover恢复 panic恐慌
通过一个案例解释:发送邮件的 发送不成功要修改数据表的邮件发送状态值
发送邮件的内部sendEmail出现错误 要去修改数据表的状态值了
发送邮件的内部sendEmail错误进行panic报警
defer最后执行 执行defer里面的函数
使用recover进行捕获了错误 然后修改发送邮件状态值为不成功 程序结束执行
这就是panic defer recover进行配合完成try catch throw的功能
defer一定放在有内部函数的前面
package main
import "fmt"
func sendEmail() {
// 相当于php的throw 发送邮件有错误进行报警panic
panic(" error ")
}
func main() {
// 相等于try
defer func() {
// 相等于catch recover进行捕获错误
if r := recover(); r != nil {
fmt.Printf("执行修改数据表状态值的动作 END")
}
}()
sendEmail()
}