Golang入门学习(五):异常处理
原创
©著作权归作者所有:来自51CTO博客作者桃花人面的原创作品,请联系作者获取转载授权,否则将追究法律责任
2.5 错误处理机制
2.5.1 基本说明
-
Go语言追求简洁优雅,因此并不支持传统的try…catch…finally这种处理方式
-
Go中引入的处理方式包括: defer, panic, recover
-
使用场景如下: 在Go程序中跑出一个异常panic, 然后在defer中通过recover捕获到这个异常然后处理之
-
加入异常处理机制,即使程序发生错误,主程序依然可以继续运行
2.5.2 入门示例
func test() {
num1 := 10
num2 := 0
ret := num1 / num2
fmt.Println(ret)
}
func testPanic() {
defer func() {
err := recover()
if err != nil {
fmt.Println("err=", err)
}
}()
num1 := 10
num2 := 0
ret := num1 / num2
fmt.Println(ret)
}
func main() {
testPanic()
fmt.Println("testPanic()执行完毕~~~")
}
2.5.3 自定义错误
- Go程序中支持自定义错误,使用errors.New和panic内置函数
- errors.New(“xxx”) 用来生成一个自定义错误,返回值是一个错误码
- panic内置函数用来接收一个interface{}类型的值作为参数,因此可以接受自定义的错误类型。提示错误信息并退出程序
func readConf(name string) (err error) {
if name != "ipsec.conf" {
return errors.New("输入的文件名称有误!")
}
return nil
}
func test2() {
if err := readConf("ipsecX.conf"); err != nil {
panic(err)
}
fmt.Println("后续代码继续执行~~~")
}
func main() {
test2()
}