异常处理
异常处理: 使用 defer,panic,recover
go中抛出一个panic异常,然后在defer中通过recover捕获这个异常,进行处理
package main
import (
"fmt"
)
func main() {
defer func() {
err := recover()
if err != nil {
fmt.Println("错误提示:",err)
fmt.Println("进行错误处理 ......")
}
}()
num1 := 10
num2 := 0
res := num1 / num2
fmt.Println("计算结果:",res)
}
自定义报错: 使用errors.New 和 panic 内置函数
errors.New("错误说明"),会返回一个error类型的值,表示一个错误
panic内置函数,接收一个interface{}类型的值作为参数(可以是任何值),可以接收error类型的变量,输出错误信息,并退出程序。
package main
import (
"fmt"
"errors"
)
func readConf(name string) (err error) {
if name == "config.ini" {
return nil
} else {
return errors.New("读取文件失败.....")
}
}
func test() {
// 处理自定义报错
defer func() {
err := recover()
if err != nil {
fmt.Println("错误提示:",err)
fmt.Println("进行错误处理 ......")
}
}()
err1 := readConf("lalalalala")
if err1 != nil {
panic(err1)
}
fmt.Println("test继续执行")
}
func main() {
test()
fmt.Println("main执行完毕")
}
package main
import (
"fmt"
"errors"
)
func readConf(name string) (err error) {
if name == "config.ini" {
return nil
} else {
return errors.New("读取文件失败.....")
}
}
func test() {
// 处理自定义报错
defer func() {
err := recover()
if err != nil {
fmt.Println("错误提示:",err)
fmt.Println("进行错误处理 ......")
}
}()
err1 := readConf("lalalalala")
if err1 != nil {
panic(err1)
}
fmt.Println("test继续执行")
}
func main() {
test()
fmt.Println("main执行完毕")
}
浙公网安备 33010602011771号