教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go 语言中的错误处理机制

Go 语言中的错误处理机制

发布时间:2021-05-04   编辑:jiaochengji.com
教程集为您提供Go 语言中的错误处理机制等资源,欢迎您收藏本站,我们将为您提供最新的Go 语言中的错误处理机制资源

Go 语言中的错误处理机制

一、错误处理机制引出

  1. 在默认情况下,当发生错误后(panic) ,程序就会退出(崩溃.)
  2. 如果我们希望:当发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。还可以在捕获到错误后,给管理员一个提示(邮件,短信。。。)
  3. 这里引出我们要将的错误处理机制

二、说明

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

三、使用defer recover 来处理错误

package main

import (
	"fmt"
	"time"
)

func test(){
	//使用defer   recover来捕获和处理异常
	defer func(){
		err := recover() // recover()是go内置函数,可以捕获到异常
		if err != nil { //err 不为空
			fmt.Println("err=", err)
		}
	}()//匿名函数
	num1 := 10
	num2 := 0
	res := num1/num2 //这句会报错,
	fmt.Println("res=", res)
}

func main(){
	test()
	for i:=0;i<3;i  {
		fmt.Println("main()下面的代码...")
		time.Sleep(time.Second)
	}
}
复制代码

四、自定义错误

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

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

import (
	"errors"
	"fmt"
	"time"
)

//函数去读取以配置文件init.conf的信息
//如果文件名传入不正确, 我们就返回一个自定义的错误
func readConf(name string) (err error) {
	if name == "config.ini" {
		//读取...
		return nil
	} else {
		return errors.New("读取文件错误")
	}
}

func test() {
	err := readConf("config2.ini")
	if err != nil {
		//如果读取文件发生错误,则err不为空(nil),并终止程序
		panic(err)
	}
	fmt.Println("test()继续执行...")
}

func main() {
	test()
	for i := 0; i < 3; i   {
		fmt.Println("main()下面的代码...")
		time.Sleep(time.Second)
	}

}
复制代码

到此这篇关于“Go 语言中的错误处理机制”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
想系统学习GO语言(Golang
go语言和python哪个难
Go语言学习3----Go语言特色
Go 语言中的错误处理机制
Go语言发展历史、核心、特性及学习路线
on error goto与try catch语句介绍
golang错误处理机制(异常处理)
Go 语言到底适合干什么?
想学一门新的编程语言?考虑一下Go (Golang)吧
go学习(十二)——Go 语言错误与异常处理机制

[关闭]
~ ~