V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Ayanokouji  ›  全部回复第 1 页 / 共 38 页
回复总数  753
1  2  3  4  5  6  7  8  9  10 ... 38  
15 小时 25 分钟前
回复了 ljzxloaf 创建的主题 Java 2025 年了,你们的 spring boot 版本到哪儿了
3.0 以前的版本,受过 CVE-2016-1000027 折磨吗 /:狗头
@broli7753
> huma 貌似对当前代码 改动比较大
是的,除非项目初期就采用,后续不好改
oapi-codegen 也是没法修改,开发顺序都发生变化了
这种写法的 swagger 没办法的,就是这么麻烦

可以看下 https://huma.rocks ,这个是用代码生成文档,类似的框架还有 fuego (支持 html tempalte )

还有一种思路是 基于 openapi 文档生成 go 代码 https://github.com/oapi-codegen/oapi-codegen
@ikaros 在错误的位置打印日志的话,不要调用栈也没关系,这样相当于自定义上下文
4 天前
回复了 iintothewind 创建的主题 程序员 golang, 开发效率低执行效率高的语言?
@wwhontheway #24 ,if err != nil 最大的问题是这个 err 怎么处理。web 业务通常情况下的逻辑就是一层层往上返回,如果出问题如何进行排查,这里很考验对 err 的处理策略,心智负担还是挺大的。
4 天前
回复了 dwu8555 创建的主题 Go 编程语言 关于 Let it crash 和错误处理
问一下,数据库事务里边也直接 paic 吗
@henix #65 认同这个观点,调用栈属于语言或者框架层面的保底机制。有了上下文也可以快速帮助排错。Error: unexpected '>' at the beginning of value 这种错误,仅仅用一个 fmt.Errorf("xxx:%w",err),也不太好处理,需要结合日志或者自定义错误类型处理
@aababc 是的,我目前也是这么解决的 return fmt.Errorf("xxx:%w", err),其实自定义 error 和 fmt.Errorf 的区别,就是看后续是否需要针对 error 类型细化处理(一般是中间件之类的)。
@aababc error 可以自定义,java 也有自定义的 excetion ,这样做的目的为了统一错误处理。
可以参考 https://github.com/danielgtaylor/huma/blob/main/error.go

但是吧,即使自定义 error ,如果 error 不带堆栈,仅靠 error 大概率还是无法确定错误位置,还是得靠 error + log 来解决。
@dwu8555 嗯。。。这么干,饭都没得吃了
@p1gd0g 官方只支持了 %w ,错误码封装的思路,需要自定义 error 。应该和 huma 的思路类似
https://github.com/danielgtaylor/huma/blob/main/error.go
@pkoukk 所以你家 go ,全是 panic recover ? java 的 try catch = go 的 panic recover ?
@Vitumoc 不是非必要用调用栈,一切为了问题排查,就比如日志突兀的出现一句:Error: unexpected '>' at the beginning of value 。这种情况知道是 json 错误,但是哪里发生的 json 错误,参数是什么之类的,定位解决问题的时候,很困难
@pkoukk 你是二极管吗,要看调用栈就得用 panic 啊,你家写 go 全是 panic 啊。前面写那么多看了吗,还是说你写过 go 吗。有能耐把你的解决方法写出来啊。
@qW7bo2FbzbC0 我目前就是这种做法,这种做法的缺陷是,前缀的 message 需要足够清晰和唯一,清晰是为了可读,唯一是为了代码搜索定位当调用栈来用。
还有如果项目做国际化,这种需要定义错误吗,维护比较费精力。
@dylanqqt 嗯,就是最底层其实不是那么好界定,写法也比较啰嗦。不过这样的日志确实能当调用栈串联起来
@dylanqqt 不能往下走是没问题的,就是五次 if err != nil 里边还有写五次打印日志,遇到错误也只能是其中一处,实际打印的日志也是一次
@bli22ard 嗯,这种做法比较认同的。第三方 error 库不太好找,有推荐的吗 github.com/pkg/errors 这个已经停更了。
还有为了兼容 slog ,可能还需要封装一些代码。
@harleyliao
@csys 日志是能说明是哪一行的。

如果遇到 error 就打印,这样日志太多了吧,比如 sevice 层,查了 5 次 sql ,那就需要写打印五次日志吗。
@pluswu1986 用的是 github.com/pkg/errors 这个库吗,但是这个已经不更新了
1  2  3  4  5  6  7  8  9  10 ... 38  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1324 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 23:44 · PVG 07:44 · LAX 15:44 · JFK 18:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.