golang错误处理机制

一、基本说明

  1. Go语言追求简洁优雅,所以,Go语言不支持传统的try...catch...finally这种处理。
  2. Go中引入的处理方式为:defer,panic,recover
  3. 这个异常的使用场景可以这么简单的描述:Go中可以抛出一个panic异常,然后在defer中通过recover捕获这个异常。然后正常处理

二、案例

package main

import (
	"fmt"
)1. 1. 

func test() {
	defer func() {
		if err := recover(); err != nil { // recover()内置函数,可以捕获异常
			fmt.Println("err=", err)
		}
	}()
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res=", res)
}

func main() {
	test()
	fmt.Println("main下面的代码")
}

输出结果:

err= runtime error: integer divide by zero
main下面的代码

三、自定义错误

Go程序中,也支持自定义错误,使用errors.New和panic内置函数

  1. errors.New("错误说明"),会返回一个error值,使用error类型的值,表示一个错误
  2. panic内置函数,接收一个interface{}类型的值(也就是任意值)作为函数,可以接收error类型的变量,输出错误信息,并退出程序
    案例:
package main

import (
	"errors"
	"fmt"
)

func test(code string) (err error) {
	if code != "200" {
		err = errors.New("接口调用失败")
	}
	return
}

func main() {
	err := test("100")
	if err != nil {
		// 如果接口调用失败,就会输出这个错误,并终止程序
		panic(err)
	}
	fmt.Println("main下面的代码")
}

输出结果:

panic: 接口调用失败

goroutine 1 [running]:
main.main()
	/box/main.go:19 +0xe6

Exited with error status 2
posted @ 2021-05-13 22:55  若雨蚂蚱  阅读(129)  评论(0编辑  收藏  举报