Golang学习之路—错误处理

   日期:2021-02-24     浏览:108    评论:0    
核心提示:错误处理错误处理案例错误处理基本说明使用defer+recover来处理错误错误处理的好处自定义错误自定义错误的介绍案例说明错误处理案例看下面代码:package mainimport( "fmt")func test(){ num1 := 10 num2 := 0 res := num1 / num2 fmt.Println("res =",res)}func main(){ test() fmt.Println("main()下面的代码")}运行结果:说明:

错误处理

  • 错误处理案例
    • 错误处理基本说明
    • 使用defer+recover来处理错误
    • 错误处理的好处
  • 自定义错误
    • 自定义错误的介绍
    • 案例说明

错误处理案例

看下面代码:

package main

import(
	"fmt"
)
func test(){ 
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res =",res)
}
func main(){ 
	 test()
	 fmt.Println("main()下面的代码")
}

运行结果:

说明:

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

错误处理基本说明

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

使用defer+recover来处理错误

代码:

package main

import(
	"fmt"
	//"errors"
)
func test(){ 
	//使用defer + recover来捕获和处理异常
	defer func(){ 
		//recover()内置函数,可以捕获到异常
		err := recover()
		if err != nil{ //说明捕获到错误与
			fmt.Println("err =",err)
		}
	}()
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res =",res)
}
func main(){ 
	 test()
	 fmt.Println("main()下面的代码")
}

运行结果:

错误处理的好处

进行错误处理后,程序不会轻易挂掉,如果加入预警代码,就可以让程序更加健壮。

自定义错误

自定义错误的介绍

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

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

案例说明

package main

import(
	"fmt"
	"errors"
)

//函数读取配置文件信息,如果文件名传入不正确,就返回一个自定义错误
func readConf(name string)(err error){ 
	if name == "config.ini"{ 
		//读取文件
		return nil
	}else{ 
		//返回一个自定义错误
		return errors.New("读取文件错误..")
	}
}
func test(){ 
	err := readConf("config.ini")
	if err != nil{ 
		//如果读取文件发送错误,就输出这个错误,并终止程序
		panic(err)
	}
	fmt.Println("test()继续执行...")
}
func main(){ 
	 test()
	 fmt.Println("main()下面的代码")
}

运行结果:

错误输出:

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服