GoFrame错误处理常用方法及错误码使用示例
作者:王中阳Go 发布时间:2024-04-25 15:30:35
标签:GoFrame,错误处理,错误码
前言
这篇文章将为大家介绍:GoFrame 错误处理的常用方法&错误码的使用。如何自定义错误对象、如何忽略部分堆栈信息、如何自定义错误码的返回、如何获取error对象中的错误码。
错误创建
New/Newf
用于创建一个自定义错误信息的error对象,并包含堆栈信息。
New(text string) error
Newf(format string, args ...interface{}) error
Wrap/Wrapf
用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息。
func Wrap(err error, text string) error
func Wrapf(err error, format string, args ...interface{}) error
NewSkip/NewSkipf
用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。
func NewSkip(skip int, text string) error
func NewSkipf(skip int, format string, args ...interface{}) error
错误码使用
错误码相关方法概览
func NewCode(code int, text string) error
func NewCodef(code int, format string, args ...interface{}) error
func NewCodeSkip(code, skip int, text string) error
func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
func WrapCode(code int, err error, text string) error
func WrapCodef(code int, err error, format string, args ...interface{}) error
NewCode/NewCodef
功能同New/Newf方法,用于创建一个自定义错误信息的error对象,并包含堆栈信息,并增加错误码对象的输入。
NewCode(code gcode.Code, text ...string) error
NewCodef(code gcode.Code, format string, args ...interface{}) error
示例代码
func ExampleNewCode() {
err := gerror.NewCode(gcode.New(101, "", nil), "My Error")
fmt.Println(err.Error()) // My Error
fmt.Println(gerror.Code(err)) //101
}
func ExampleNewCodef() {
err := gerror.NewCodef(gcode.New(101, "", nil), "It's %s", "My Error")
fmt.Println(err.Error()) //It's My Error
fmt.Println(gerror.Code(err).Code()) //101
}
WrapCode/WrapCodef
功能同Wrap/Wrapf方法,用于包裹其他错误error对象,构造成多级的错误信息,包含堆栈信息,并增加错误码参数的输入。
WrapCode(code gcode.Code, err error, text ...string) error
WrapCodef(code gcode.Code, err error, format string, args ...interface{}) error
示例代码
func ExampleWrapCode() {
err1 := errors.New("permission denied")
err2 := gerror.WrapCode(gcode.New(403, "", nil), err1, "Custom Error")
fmt.Println(err2.Error()) // Custom Error: permission denied
fmt.Println(gerror.Code(err2).Code()) // 403
}
func ExampleWrapCodef() {
err1 := errors.New("permission denied")
err2 := gerror.WrapCodef(gcode.New(403, "", nil), err1, "It's %s", "Custom Error")
fmt.Println(err2.Error()) // It's Custom Error: permission denied
fmt.Println(gerror.Code(err2).Code()) // 403
}
NewCodeSkip/NewCodeSkipf
功能同NewSkip/NewSkipf,用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略),并增加错误参数输入。
func NewCodeSkip(code, skip int, text string) error
func NewCodeSkipf(code, skip int, format string, args ...interface{}) error
获取error中的错误码接口
func Code(err error) gcode.Code
当给定的error参数不带有错误码信息时,该方法返回预定义的错误码gcode.CodeNil
来源:https://juejin.cn/post/7112428421392629773
0
投稿
猜你喜欢
- 目录1、简介2、正文2.1 and操作符2.2 or操作符2.3 in操作符2.4 not操作符2.5 操作符顺序1、简介在MySQL中使用
- 1、引言小 * 丝:鱼哥,最近有点不像话了。小鱼:嗯?? 啥个意思嘛~小 * 丝:一周了,没分享小知识了。小鱼:就因为这个??小 * 丝:那是,我这么爱
- skimage的transform模块图像的形变与缩放,使用的是skimage的transform模块,函数比较多,功能齐全。1、改变图片尺
- 基于循环神经网络(RNN)的古诗生成器,具体内容如下之前在手机百度上看到有个“为你写诗”功能,能够随机生成古诗,当时感觉很酷炫= =在学习了
- 功能描述:打开一个网站的网页,过5分钟不动作,就会锁定页面,隐藏内容容器,显示一个容器用于输入密码,输入正确的密码来解锁。锁定后即使用户刷新
- 前言Golang语言有诸多优点:静态编译、协程、堪比c语言的高性能。但是也有一些令人发指的地方 —— 经常被人调侃 五行代码,三行错误处理
- 目录前言解决方案工具介绍工作原理使用限制使用注意使用示例部分参数说明输出结果示例腾讯云数据库 MySQL 使用注意总结一下前言写作案例分析,
- 网站能切换几套CSS风格早已不是什么新鲜事了。大家也都知道怎么去弄。早上发现一个有意思得站点 http://www.leemunroe.co
- 前言使用 requests进行爬取、BeautifulSoup进行数据提取。主要分成两步: 第一步是解析图书列表页,并解析出里面的图书详情页
- np.arange 步长0.1问题两个小测试:1)count输出什么?import numpy as np y_m
- 一、Tkinter的介绍和简单教程Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建
- 1.选择File -> Settings2.选择 File and Code Templates -> Files ->
- 最近用layer ui上传文件遇到了一个问题,我想在上传文件之前把data-id传入后台,layer文档找了一下也没有找到类似的说明,经过一
- 今天跟大家分享一下,如何通过Python实现一个轻量级的库来获取电脑上连接的Android设备信息,为什么说轻量呢因为整个库也就4KB,相比
- 目录Counter举例实战sortedallF-strings总结Python中冷门但非常好用的内置函数 Counter举例 实战sorte
- 最近接触到Tencent的广告越来越多,户外广告牌和电视上都是,可以明显感觉到Tencent的扩张野心,以及对QQ品牌定位的重塑。摆脱低龄化
- MySQL5升级为MySQL8问题my.ini首先推荐一个软件“everything”,一个轻巧的遍
- print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,#!/usr/bin/python # -*- coding: UT
- 微信小程序 支付功能实现PHP实例详解前端代码: wx.request({ url: 'https://w
- 检测submit事件的冒泡情况:<!doctype html><html dir="ltr" lang