错误

  1. - 错误是在程序中预期会发生的结果,预料之中

error

  1. * 在代码中显示检查错误,而非忽略错误
  1. func main() {
  2. //打开一个没有的文件,
  3. file,error:=os.Open("aaa.txt")
  4. if error != nil {
  5. fmt.Println(error) //open aaa.txt: The system cannot find the file specified.
  6. return
  7. }
  8. fmt.Println(file.Name())
  9. }

自己定一个错误

  1. * errors.New("xxx")
  2. * fmt.Error
  1. //设置的数字小于0 提示不合法
  2. func setAge(age int)error{
  3. if age<0 {
  4. return errors.New("不合法")
  5. }
  6. return nil
  7. }
  8. func main() {
  9. age :=setAge(-1)
  10. if age!=nil{
  11. fmt.Println(age)
  12. }
  13. }

2.异常

panic

  1. * 异常:不该出现问题的地方出现了问题,预料之外
  2. * 程序遇到painc会强制结束
  3. * defer延迟函数
  1. func main() {
  2. //defer延迟执行
  3. defer fmt.Println("aa")
  4. fmt.Println("123")
  5. //遇到panic终止程序前会先执行完defer
  6. panic("异常结束")
  7. }

recover

  1. * recover结合defer处理panic异常
  1. func main() {
  2. //defer延迟执行
  3. defer func() {
  4. if msg := recover(); msg != nil {
  5. fmt.Println("recover执行了... panic msg:", msg)
  6. // 处理逻辑
  7. fmt.Println("---------程序已恢复----------")
  8. }
  9. }()
  10. defer fmt.Println("aa")
  11. defer fmt.Println("bb")
  12. fmt.Println("123")
  13. //遇到panic终止程序时会先执行完defer
  14. panic("遇到异常")
  15. }