错误处理机制
1.错误机制
相当于其他语言中的try catch,不过这里叫defer + recover
package main
import "fmt"
func main(){
test()
fmt.Println("1111")
}
func test(){
//defer + recover
defer func(){
//调用recover,可以捕获错误
err := recover()
//如果没有捕获错误,recover返回值为0值: nil
if( err != nil ){ //如果捕获错误
fmt.Println("捕获error")
fmt.Println("err : ",err)
}
}()
num1 := 10
num2 := 0
fmt.Println(num1 / num2)
}
defer的特性,在函数正常执行完之后再执行,recover捕获错误并返回给err。如果返回值为nil(类似于null?)那么就无错,如果是其他数值,则对应不同错误。
2.自定义错误
package main
import (
"errors"
"fmt"
)
// 抛出自定义错误
func main() {
err := test() //接收错误类型
if err != nil { //如果捕获错误
fmt.Println("捕获error")
fmt.Println("err : ", err)
}
fmt.Println("1111")
}
func test() (err error){
num1 := 10
num2 := 0
if num2 == 0 {
//抛出自定义错误
return errors.New("除数不能为0")
} else {
fmt.Println(num1 / num2)
return nil
}
}
3.接收错误之后中断程序
在错误处理之后调用panic函数即可