(15)Go错误处理

1.erro(一般错误)

package main

import (
	"errors"
	"fmt"
)

func div(a, b int) (res int) {
	if b == 0 {
		err := errors.New("分母不能为0")
		println(err.Error())

	} else {
		res = a/b
	}
	return
}

func main() {
	res := div(10,0)
	fmt.Println(res)
}

2.panic(宕机)

package main

import (
	"fmt"
)

func div(a, b int) (res int) {
	if b == 0 {
		panic("分母不能为0")	// 在这宕机 后面程序不执行了
	} else {
		res = a/b
	}
	return
}

func main() {
	res := div(10,0)
	fmt.Println(res)
}

3.recover(恢复错误)

package main

import (
	"fmt"
)

func div(a, b int) (res int, err error) {
	defer func() { // 发生错误时恢复
		if e := recover(); e != nil {
			err = fmt.Errorf("err: %v", e)
		}
	}()

	if b == 0 {
		panic("分母不能为0") // 在这宕机 后面程序不执行了
	} else {
		res = a / b
	}
	return
}

func main() {
	res, err := div(10, 0)
	fmt.Println(err.Error())
	fmt.Println(res)
}

 

posted @ 2019-11-06 00:57  jadeshu  阅读(84)  评论(0编辑  收藏  举报