码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • spannerlib优雅的go异常处理


    蹩脚的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("123", "", "")))
    

    output:

    
    123
    
  • 相关阅读:
    k8s-hpa控制器 16
    Mac风扇控制电脑降温软件Macs Fan Control Pro 简体中文
    【推荐】智元兔AI:一款集写作、问答、绘画于一体的全能工具!
    【PAT甲级 - C++题解】1103 Integer Factorization
    交叉编译opencv时,无法安装cmake-gui
    瑞意教育集团阳光助学 军训展风采 青春正当时2024级新生军训圆满落幕
    千字文||无聊又数了一下千字文字数
    备战数学建模33-灰色预测模型2
    数据库.创建表
    jvm 内存结构 ^_^
  • 原文地址:https://www.cnblogs.com/a-xu/p/18158513
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号