20 条回复  ·  2253 次点击
sss393 小成 2025-6-24 11:42:24
我感觉 go 的写法挺好的,好几年前写前端的时候,也会把 trycatch 改造成 const [err, res] = xxx 这种写法,比 trycatch 嵌套好用多了
wyntalgeer 初学 2025-6-24 11:46:12
@iorilu 这 OP 基础用法不看,选择来发帖……
mdn 初学 2025-6-24 11:50:10
语言习惯问题
BBCCBB 小成 2025-6-24 11:50:18
```go f err != nil { fmt.Println("打开文件失败", err) } ``` 这里有 err 还继续执行后续的解析, 逻辑就不对? 要么跳过解析, 要么直接 return. 如果是直接 return, 在 python 里抛异常直接就跳回去了, 只需要在外层加 try catch 就行了. 不需要每个地方都 try catch, 但 go 不行, 每个地方都得写. 只有在跳过解析或者你要在打开失败做一些操作, 比如忽略报错的时候, 才需要在 open 加 try catch.
zjengjie 初学 2025-6-24 11:55:10
打印个 "打开文件失败" 就叫处理异常吗,你的 go 代码里前面都失败了还在往后走呢。一般这类错误本来就不用管,直接看程序打印的异常堆栈就知道那行出错了。大型项目一般都有全局异常处理,根据异常类型统一处理和返回,写的时候除非特殊情况要处理,一般也不需要太关注,最多就转成个自定义 exception 抛出去就好了。
Alias4ck 小成 2025-6-24 11:55:49
不想要心智负担 就不要类型检查(doge 看看 rust 你可能心智负担更严重 和编译器做斗争哈哈😄 另说一句可以捕获不同的自定义 exception 在一行 https://docs.python.org/3/tutorial/errors.html#handling-exceptions
GeruzoniAnsasu 小成 2025-6-24 11:56:35
用法是错的,心智负担增加是对的。python 的感觉大概是谁来都能写成狗屎,go 的感觉大概是拴条狗来都能在屎上继续写
lambdaq 小成 2025-6-24 11:58:09
try: iiiiii jjjjjj except 文件挂了 xxx except 解析出错 yyyyy except 其他挂了 zzzzz
aloxaf 小成 2025-6-24 12:02:42
话说你 Go 这里面的处理方式也不对啊,你打印了错误,结果继续往下执行了? 你应该打印后直接上抛,放在 Python 里就相当于什么都不处理,在上层捕获再打印错误。
w568w 小成 2025-6-24 12:09:25
这俩语言都是用来快工出糙活的。 不是说你考虑错误处理不对,而是语言设计者就不希望你这么写,最自然的方式就是 let it crash 。 如果希望严谨处理,你应该看 Rust 之类的有强错误标记的语言,或者等等接下来的 Kotlin 2.4 。
返回顶部