蹩脚的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
posted @ 2024-04-25 20:35 阿旭^_^ 阅读(116) 评论(1) 推荐(1) 编辑
摘要: 相信大家都很喜欢用grep指令,查一下项目中有没有出错的,然后通过logid搜索相关出错的日志和一些关键参数,但是在多行日志的情况下就很难处理了,比如okhttp拦截器中分别打印了url,param和response,然后你想统计一下有多少成功的,有多少失败的,发现就比较难了。 解决这个问题的方法, 阅读全文
posted @ 2024-01-26 09:27 阿旭^_^ 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 背景 不卷!php经历多年的不衰败的原因只有一个,哪就是不卷,但是由于并发和缺乏编译严谨度降低,使得长青树不得己走向了衰败。 但!叱咤风云多年,大企百度、腾讯、新浪、搜狐的首先语言的流行在于,其语言的简洁,对业务表达的更为直接。拒绝java的对象中加层中层,在我眼中哪就是一坨臭臭~ 话不多说,上代码 阅读全文
posted @ 2024-01-15 00:31 阿旭^_^ 阅读(368) 评论(0) 推荐(0) 编辑
摘要: MagicArray致力于让研发不再卷,这个灵感来源于php语言,可能多少年以后,php可能不会有太多人记得。但是在一个年代里,如果论坛里里常见最火爆的帖子无疑是:php是世界上最好的编程语言。由此可见php是一个多么招人爱,也招人恨的存在。 php中的不足在于其并发能力不足,编译检查不足等问题,招 阅读全文
posted @ 2023-12-27 18:20 阿旭^_^ 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 卷!一个字形容了当今码农行业的现状。一层一层的代码结构,一个一个dto,entity,vo,req,resp。这些对象越来越多,让码农们非常劳于奔命,加一个字段,改一个字段,影响面有多少。代码量也越来越大。有可能一个代码,要建10多个数据对象。这虽然有点夸张,但体现了行业的乱象。 我是曾经写php代 阅读全文
posted @ 2023-12-26 20:46 阿旭^_^ 阅读(235) 评论(0) 推荐(1) 编辑
摘要: ls -l|tee >(wc -l) >(wc -c) > /dev/null 阅读全文
posted @ 2023-11-03 10:23 阿旭^_^ 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 子网俺码用于划分网段,目前划分方法分为平均划分和可变划分两种,最长用的是平均划分法。计算如下: 1、计算规则 IP的二进制 & MASK二进制 = IP网段 2、前缀表示法 192.168.1.16/27 其中27表示,32位中,多少位为net ip,剩余的便是host ip,mask ip便是:2 阅读全文
posted @ 2023-07-03 15:53 阿旭^_^ 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 多菌灵 己唑醇 多菌灵是一种苯并咪唑类的杀菌剂,杀菌谱较广,高效低毒。作用机理为干扰真菌有丝分裂中纺缍体的形成,从而影响细胞分裂,具有保护和治疗作用。对葡萄孢、镰刀菌、小尾孢菌、青霉菌、壳针孢菌、核盘菌、黑星菌、轮枝孢菌和丝核菌等病原菌均有效果较好,可用于防治灰霉病、枯萎病、白粉病以及菌核病等多种病 阅读全文
posted @ 2023-05-21 08:10 阿旭^_^ 阅读(325) 评论(0) 推荐(0) 编辑
摘要: #!/bin/bash while [ 1 ]do ps aux|awk '{if($3>10){print $3" => "$0}}' sleep 0.5sdone 阅读全文
posted @ 2022-03-15 16:27 阿旭^_^ 阅读(45) 评论(0) 推荐(0) 编辑
摘要: flink 分区实现 http://smartsi.club/physical-partitioning-in-apache-flink.html 阅读全文
posted @ 2021-11-25 14:58 阿旭^_^ 阅读(34) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示