package main
import (
"fmt"
)
func main() {
// deferTest()
/**
总结
1、defer延迟执行异常处理
2、recover会捕获抛出的异常(主动异常或未知异常)
3、panic会主动抛出异常
*/
defer exceptionCatch()
panicTest(true)
}
// panic英⽂意思是恐慌,在这⾥意思是抛出⼀个程序异常,即报告程序运⾏时错误
func panicTest(throw bool) {
println("panicTest begin")
if throw {
panic("抛出一个异常")
}
println("panicTest end")
}
// defer有延迟的意思,就是稍后执⾏,先执⾏函数主体内容,defer的内容稍后执⾏
func deferTest() {
// 异常处理 内置函数方式
//defer func() {
// if r := recover(); r != nil {
// fmt.Println("Some error happened!", r)
// ret = -1
// }
//}()
// 异常处理 外部函数方式
defer exceptionCatch()
array := [3]int{2, 3, 4}
index := 0
for ; index < 10; index++ {
println(array[index])
}
}
// recover() 函数⽤于终⽌错误处理流程,也就是我们常规说的 catch
func exceptionCatch() {
if r := recover(); r != nil {
fmt.Println("出现异常了:", r)
}
}