V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  kivmi  ›  全部回复第 1 页 / 共 4 页
回复总数  65
1  2  3  4  
2 天前
回复了 cloudzhou 创建的主题 职场话题 大龄被裁大头兵职业感想
不要再痴迷于技术了,不要再痴迷于为人打工了,为了自己的流量密码和生意而搞技术,公司里写个屎山都没关系,私下里发展自己的事业,这样才能有一番事业。不然离了公司,断了粮!怎么能让自己可持续发展?可能需要站在技术前沿,站在全人类,而不是仅仅中国的角度来考虑问题,将文化和技术融合,将技术和文化融合,寻找技术壁垒,也就是说对于普通的程序员,更应该使用赚快钱的方式,而不是把一件事当做做一辈子的心态,与时俱进,随时切换。这是我对自己 10 多年工作的总结!
其实 github.com/gookit/slog 中已经有了所有的信息,包括行信息,当然这种情况下,对于多个链路调用没那么友好,只能看到发生错误的地方,到底是哪个模块产生的错误,还是不是很清楚,因此可以打印整个的调用栈帧,如下:

func printCallers() {
var pcs [10]uintptr
n := runtime.Callers(2, pcs[:])
frames := runtime.CallersFrames(pcs[:n])
for {
frame, more := frames.Next()
fmt.Printf("Function: %s\nFile: %s\nLine: %d\n\n", frame.Function, frame.File, frame.Line)
if !more {
break
}
}
}

func ErrWrap(err error, message string) (e error) {
if err != nil {
slog.Info(message)
printCallers()
return err
}
return nil
}

这样既可以拿到对应的行,也可以看到整个的调用栈:

[2025/01/01T15:45:43.828] [application] [INFO] [main.go:30,ErrWrap] Json 解析错误

Function: main.ErrWrap
File: F:/workspace/go/errors-demo/main.go
Line: 31

Function: main.covert
File: F:/workspace/go/errors-demo/main.go
Line: 39

Function: main.main
File: F:/workspace/go/errors-demo/main.go
Line: 51

Function: runtime.main
File: C:/Program Files/Go/src/runtime/proc.go
Line: 250

Function: runtime.goexit
File: C:/Program Files/Go/src/runtime/asm_amd64.s
Line: 1594

Error: invalid character '>' looking for beginning of value
Result: map[]

Process finished with the exit code 0
func ErrWrap(err error, message string) (e error) {
if err != nil {
fmt.Println(fmt.Errorf("Error: %v\nStack trace:\n%s", err, debug.Stack()))
slog.Info(message)
return err
}
return nil
}

func covert(data string) (result map[string]interface{}, err error) {
e := json.Unmarshal([]byte(data), &result)
e = ErrWrap(e, "Json 解析错误")
return result, e
} 类似这样的,是否满足你的需求呢?
nas
说啥好呢?还是不说了吧.....OP ,加油!
18 天前
回复了 Ashe007 创建的主题 程序员 学习研究搭建 Kubernetes 的问题
@gdw1986 用 kubeadmin 就绕过了
18 天前
回复了 Ashe007 创建的主题 程序员 学习研究搭建 Kubernetes 的问题
@LokiSharp 自己玩 16G ,可以的
18 天前
回复了 Ashe007 创建的主题 程序员 学习研究搭建 Kubernetes 的问题
@kursk K8S 只是一个容器编排工具,管理 pod 和容器,当然会涉及网络,存储,服务暴露之类的东东。
18 天前
回复了 iamtuzi3333 创建的主题 程序员 大佬们,请教一下数据读取
从大数据处理基本都是 map-reduce ,所以,这么直接查询原始数据,总感觉有些不妥
18 天前
回复了 freesun165 创建的主题 git 求助 git 自动 merge 丢代码
太危险了,master -> branch , 相当于你对同一行的修改无效啊,各种冲突吧?可以从 master 同时 fork 几个分支?一个为开发分支,一个为上线分支?当需要上线时,合并到上线分支,然后合并到 master ,一直保持上线分支跟 master 保持一致,实现快速上线。貌似 git flow hotfix 也可以做到。
18 天前
回复了 ray2100 创建的主题 北京 程序员们一起跨年,一起玩
京西大悦城有跨年活动
54 天前
回复了 Joker123456789 创建的主题 Java 其实,我更喜欢写 SQL
直接存储过程走起
54 天前
回复了 li8888 创建的主题 程序员 新上一个工具站,求指点
@unclezs 系统卡顿引起的
54 天前
回复了 li8888 创建的主题 程序员 新上一个工具站,求指点
@unclezs 桌面快捷方式启动不了
54 天前
回复了 li8888 创建的主题 程序员 新上一个工具站,求指点
@unclezs 貌似是需要管理员安装
54 天前
回复了 li8888 创建的主题 程序员 新上一个工具站,求指点
@unclezs window11 都启动不了啊
@Belmode java 的生态学起来周期太长,而且面试很卷,前端快多了,至少前端其实可以接活干
85 天前
回复了 gransh 创建的主题 职场话题 年纪大又技术一般的人未来能做什么?
这个问题无解的。找到答案的也不会告诉你,告诉你的,你也不会接受。。。
感觉你转前端是不是比 java 强点? Java 真的很倦的
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
Developed with CodeLauncher
♥ Do have faith in what you're doing.