go 错误处理
在默认情况下,当发生错误后(panic),程序就会退出(崩溃)。
如果希望发生错误后程序还能继续运行就要做错误处理
使用defer+recover来捕捉和处理异常
- go语言追求简洁优雅,所有go不支持传统的try、catch、finally这种处理
- go中引入的方式是:defer、panic、recover
- go运行的时候抛出一个异常,通过defer通过recover来捕捉这个异常进行处理
package main
import "fmt"
func test() {
// 使用defer+recover来捕捉和处理异常
defer func() {
err := recover() // recover内置函数,可以捕捉到异常
if err != nil { //说明捕捉到错误
fmt.Println("ERROR:", err)
}
}()
num1 := 10
num2 := 2
res := num1 / num2
fmt.Println(res)
}
func main() {
test()
}
使用自定义来处理错误
GO 程序中支持自定义错误,使用errors.New和panic内置函数
- errors.New("错误说明"),会返回个error类型的值,表示一个错误
- panic内置函数,接收一个interface{}类型的值(任何值)作为参数。可以接手error类型的变量,输出错误信息,并退出程序。
package main
import (
"errors"
"fmt"
)
func readconf(name string) error {
if name == "config.ini" {
fmt.Println("读取文件中....")
return nil
}
return errors.New("读取文件错误")
}
func main() {
// test()
err := readconf("config.ii")
if err != nil {
fmt.Println(err)
}
}

浙公网安备 33010602011771号