个人觉得 Go 的 error 设计的非常好,为什么还那么多人吐槽?

查看 159|回复 14
pursuer   
虽然不知道第几次看到类似讨论了...throw catch 是一种函数多级退出的在控制流上语法糖,go 里对应的是 panic ,Java 你写个 return Multivalue也不是不行
cyp0633   
离 rust 就缺那么一点儿
zihuyishi   
其实这个错误处理很早的时候 windows 的 com 组件就是这么设计的,所有的 com 相关 c++接口都返回一个 HRESULT 需要处理,然后这个 HRESULT 在 c#和 vb 这种语言表现就是抛异常。包括后来 javascript 的 promise 也是差不多,最开始是.catch()处理,在 async 函数里就是 try catch
golang 比较特别的其实在于你不好忽略一个 error ,不处理编译不通过,直接用'_'忽略 static check 也会抱怨,导致用户不得不处理这个错误,虽然有些烦,但是我认为是很好的设计。反倒是之前太多人错误处理都太草率了
wkong
OP
  
@Ayanokouji
1. try catch 判断比字符串判断高级些吗?越简单明了的设计反而是好的设计。
2. 多层 error ,可以在最底层的 error 打个 log ,就知道来源了
3. 不仅仅是多写代码问题
musi   
一个函数里面加了十几个 if 就是为了判断程序有没有错。。。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部