博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go 捕获处理error
阅读量:2071 次
发布时间:2019-04-29

本文共 1401 字,大约阅读时间需要 4 分钟。

package mainimport (	"errors"	"fmt")func PanicError(p interface{}) (err error) {	//捕获 and 恢复 panic.	/*注意defer延迟执行的函数可以修改外围函数“PanicError”的命名返回值.	 *通过调用recover捕获panic并转化为error. 也许有人打算在main函数中放一个下面这个defer语句,用于捕获程序中的一切panic异常,	 *建立最后一道防火墙,从而使程序避免崩溃运行下去, 但很不幸, 当main函数的defer延迟函数被执行时,也就意味着main函数要退出了,	 *此时再捕获panic恢复程序,意义还有多大呢;不过我们有办法克服, 建立一个像“PanicError”这样的一个外围封装函数,在这个函数中,	 *建立最后一道防火墙,就像此处例子代码中所做的一样, 将panic封闭在自己的包内, 不允许蔓延传染给其它包, 包与包之间只通过error传递	 *结果状态.	 */	defer func() {		if r := recover(); r != nil {			fmt.Println("Recovered in PanicError", r)			//check exactly what the panic was and create error.			switch x := r.(type) {			case string:				err = errors.New(x)			case error:				err = x			default:				err = errors.New("Unknow panic")			}		}	}()	panic(p)	return nil}func main() {	//logic code , panic here.	//panic("i am string")	//panic(errors.New("i am error"))	fmt.Println(PanicError("i am string"))	fmt.Println(PanicError(4))	fmt.Println(errors.New("i am error"))	fmt.Println("panic restore now, continue.")}

自己写的一种,尽量避免panic的情况

20190610更新

第二版,利用开源工具包处理error

go get github.com/pkg/errors

package mainimport (	"fmt"	"github.com/pkg/errors")func main() {	err := createError("this is a simple error", "this is error description")	if err != nil {		fmt.Println(err.Error())	}}func createError(errorName string, errorDescription string) error {	return errors.Wrap(errors.New(errorName), errorDescription)}

 

转载地址:http://gypmf.baihongyu.com/

你可能感兴趣的文章
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【面试】一份自我介绍模板
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>