Golang 异常处理
在写 go 开发过程中我们要不断的写err
判断,这个真是一个头疼的事情
下面我们来说说 golang 中关于错误处理的相关问题把
golang 中有一个error
类型用来作为err
信息处理
golang 中如何抛出异常和捕获异常
- 系统自己抛出异常
- 自己手动抛出异常,使用`panic()`函数手动抛出
- 使用`recover()`函数捕获异常
package main
import "fmt"
// 系统抛
func test001() {
x := [5]int{0, 1, 2, 3, 4}
x[1] = 10
fmt.Println(x)
// 超出索引触发异常
index := 100
x[index] = 20
fmt.Println(x)
}
// 自己抛出异常
func getCircleArea(x float32) float32 {
if x < 0 {
// 手动使用panic触发异常
panic("半径不能为负数")
}
return 3.14 * x * x
}
// 捕获panic异常
func test002() {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
area := getCircleArea(-10)
fmt.Println(area)
}
func main() {
//test001()
//area := getCircleArea(10)
// 传一个负数触发异常
//area := getCircleArea(-10)
//fmt.Println(area)
test002()
}
返回异常
返回异常类型为error
类型
package main
import (
"errors"
"fmt"
)
// 自定义返回异常
func getCircleArea(x float32) (area float32, err error) {
if x < 0 {
// 初始化一个错误信息
// err = errors.New("半径不能为空")
err = fmt.Errorf("%s", "半径不能为空")
return
}
area = 3.14 * x * x
return
}
func main() {
area, err := getCircleArea(-10)
// 根据返回的错误信息处理异常
if err != nil {
fmt.Println(err)
return
}
fmt.Println(area)
}