错误
- 错误是在程序中预期会发生的结果,预料之中
error
* 在代码中显示检查错误,而非忽略错误
func main() {
//打开一个没有的文件,
file,error:=os.Open("aaa.txt")
if error != nil {
fmt.Println(error) //open aaa.txt: The system cannot find the file specified.
return
}
fmt.Println(file.Name())
}
自己定一个错误
* errors.New("xxx")
* fmt.Error
//设置的数字小于0 提示不合法
func setAge(age int)error{
if age<0 {
return errors.New("不合法")
}
return nil
}
func main() {
age :=setAge(-1)
if age!=nil{
fmt.Println(age)
}
}
2.异常
panic
* 异常:不该出现问题的地方出现了问题,预料之外
* 程序遇到painc会强制结束
* defer延迟函数
func main() {
//defer延迟执行
defer fmt.Println("aa")
fmt.Println("123")
//遇到panic终止程序前会先执行完defer
panic("异常结束")
}
recover
* recover结合defer处理panic异常
func main() {
//defer延迟执行
defer func() {
if msg := recover(); msg != nil {
fmt.Println("recover执行了... panic msg:", msg)
// 处理逻辑
fmt.Println("---------程序已恢复----------")
}
}()
defer fmt.Println("aa")
defer fmt.Println("bb")
fmt.Println("123")
//遇到panic终止程序时会先执行完defer
panic("遇到异常")
}