首页 > 其他分享 >spannerlib优雅的go异常处理

spannerlib优雅的go异常处理

时间:2024-04-25 20:46:18浏览次数:24  
标签:spannerlib err strconv month year go gin 优雅

蹩脚的go 异常处理

一般写go的人,如果他不是写算法,正常写业务代码的话,可能都会为优雅的异常处理而烦恼,因为脑子抽筋的go设计者们,总是感觉语法糖是一种很低级的东西。但是在我们大多数公司的业务逻辑中,没有语法糖让代码非常丑陋,不易于维护。
如何让go 代码更具有可读性,哪么就要给go加糖!

引入spannerlib

go get github.com/lingdor/spannerlib

异常处理

通常我们需要这么写代码

num,numErr:=strconv.Itoa("123")
if numErr!=nil {
    panic(numErr)
}
age,ageErr:=strconv.Itoa("18")
if ageErr!=nil {
    panic(ageErr)
}

优雅起来

ginRoute.use(func ContextInit() gin.HandlerFunc {
	return func(c *gin.Context) {
		if err := recover(); err != nil {
		log.Error(fmt.Sprintf("%v", err))
		if msg, ok := E.GetErrorData[string](err); ok {
			c.JSON(http.StatusOK, gin.H{
				"code":    1,
				"message": msg,
			})
			return
		}
	}
})


ginRoute.Get("/hello",func(c *gin.Context){
	
	year := E.Must1(strconv.Atoi(c.Query("year")))
	month := E.Must1(strconv.Atoi(c.Query("month))
    //others
})

//or
ginRoute.Get("/hello2",func(c *gin.Context){
	
	year := E.Catch1(strconv.Atoi(c.Query("year"))).IfErrorData("year格式不正确").Must()
	month := E.Catch1(strconv.Atoi(c.Query("month"))).IfErrorData("month格式不正确").Must()
   // others
})

增加堆栈打印

err:=fmt.Errorf("123")
err:=errors.Wrap(err,0,"msg")

fmt.printf("%v",err)

output

Exception MSG
testing.tRunner(/usr/local/go/src/testing/testing.go:1689)

字符处理

判断字符是否开始于

if str.StartWith("hello world","hello") {
//true
}

2.2. 通过字符实现字符截取

fmt.Println(E.Must1(StringPick("<html><body>123</body></html>", "<body>", "</body>")))

output:


123

标签:spannerlib,err,strconv,month,year,go,gin,优雅
From: https://www.cnblogs.com/a-xu/p/18158513

相关文章

  • Golang - 空指针如何预防
    在Go语言中,空指针是一个常见的运行时错误来源,它通常发生在尝试访问一个未被初始化或已被设置为nil的指针所指向的值。1、凡是有点『.』操作的的行为都要先进行非nil判断:例如,想记录一个err的msg,通过err.Error()就可以获取到err的string类型的错误消息msg,但这里需要对err进行非nil......
  • 三十分钟入门基础Go(Java小子版)
    前言Go语言定义Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种静态、强类型、编译型语言。Go语言语法与C相近,但功能上有:内存安全,GC,结构形态及CSP-style并发计算。适用范围本篇文章适用于学习过其他面向对象语言(Java、Php),但没有学过......
  • Django admin static files errors All In One
    DjangoadminstaticfileserrorsAllInOne404errorshttp://127.0.0.1:8000/admin/demos$pythonmanage.pyrunserver#admin#123456#[email protected]://127.0.0.1:8000/admin/login/?next=/admin/(......
  • MongoDB db.collection.explain()
    db.collection.explain()封装了explain命令,推荐使用db.collection.explain()来执行explain命令。 db.collection.explain()返回以下方法的查询计划:aggregate()、count()、find()、remove()、distinct()、findAndModify() 因此,db.collection.explain()的使用方法就是......
  • golang工具函数,把一个金额整型,单位为分,转成"1,231,111.00"格式的字符串
    这个函数首先将整数除以100来获取代表元的浮点数,然后格式化此数值为两位小数的字符串。接下来,函数将字符串分成整数和小数部分,并且为整数部分添加千位分隔符。最后,如果存在小数部分,它会将这两部分重新组合并返回正确格式化的金额字符串。为了正确地处理负数,我们需要先检查金额是......
  • go学习00
    下载gin失败解决办法:cmd输入goenv-wGO111MODULE=ongoenv-wGOPROXY=https://goproxy.io,direct即可安装gin包gogetgithub.com/gin-gonic/gingoland中go.mod的require是灰色解决办法:即可愉快运行Demopackagemainimport( "github.com/gin-gonic/gin")func......
  • mongodb 分片创建使用汇总
    5.Mongodb1.查看分片:db.runComand({listshards:1})2.查看数据存储情况:showdbs3.查看分片状态:sh.status()4.开启数据库分片配置:db.runComand({enablesharding:"testdb"})db.enableSharding("testdb")db.shardCollection("testdb.persons",{id:1})5.创建索引(如果有......
  • go实现分布式锁
    用Go语言&&Redis实现分布式锁,我还是第一次磊丰 Go语言圈 2024-04-1508:30 广东 1人听过Go语言圈Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长158篇原创内容公众号......
  • go是怎么实现正反向代理的
    Go语言是如何实现HTTP代理和反向代理磊丰 Go语言圈 2024-04-2208:30 广东 65人听过Go语言圈Go语言开发者的学习好助手,分享Go语言知识,技术技巧,学习与交流Go语言开发经验,互动才有助于技术的提升,每天5分钟,助你GO语言技术快乐成长158篇原创内容公众号......
  • Go汇编
    Go语言编译后的汇编指令Go1.20以及之后的版本为了减小Go发行版的大小,默认不再安装标准库的预编译包,需要执行以下命令自行安装。GODEBUG=installgoroot=allgoinstallstd否则若依赖到标准库,会抛出类似以下异常:couldnotimportfmt(openfmt.a:nosuchfileordirector......