本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

错误和异常

一、什么是错误:

  • 是可能出现问题的地方出现了问题。意料之中的

  • 比如:

  • 打开文件错误

  • 连接数据库错误

  • 接口请求错误

二、什么是异常

  • 不应该出现问题的地方出现了问题。意料之外的

  • 比如:

  • 角标越界

  • 引用了空指针(panic: runtime error: invalid memory address or nil pointer dereference)

三、错误和异常的区别:

  • 就是error和panic的区别

四、出现异常的两种场景

  • 系统运行中报异常

arr := [3]int{1,2,3}
// 这里的index使用运算,避免程序没有运行前检测出错误
index := 2+8
fmt.Println(arr[index])


* 自己手动抛异常,panic

* 使得该错误不会被忽略,因而能够被尽快修复。

* ```
if err != nil {
panic(err)
}

五、避免异常的两种方式:

  • defer中使用recover,使程序"重新复活"。defer:延迟语句,主函数退出后defer后的函数才会执行

  • defer必须事先定义,而不是在异常发生的后面定义,执行顺序与声明顺序相反,相当于Java中的finally )

defer func() {
if err := recover(); err != nil {
logs.Error(" 错误 %s\r\n", err)
l.TplName = “success.html”
}
}()


先触发panic函数的执行,然后调用延迟函数

* 以返回错误替代异常

* ```
a := "aaa"
b,err := strconv.ParseInt(a,10,64)

1361人已阅读,今天你学习了吗?

添加新回复