golang 里面是如何处理错误的

2012-10-27 16:56:04 +08:00
 hyq
假设有如下代码
http://gist.github.com/3963642
请问如何确定出错的原因?我看文档里面对这部分介绍得很少啊
6695 次点击
所在节点    编程
14 条回复
wayn3h0
2012-10-27 17:02:16 +08:00
error类型可返回具体信息
tioover
2012-10-27 17:04:50 +08:00
Go设计者觉得异常处理是邪道,所以只能用传统方法
hyq
2012-10-27 17:15:48 +08:00
@wayn3h0 我看了文档,又读了源码,总觉得返回的信息不完全,还不如C语言的Socket api好用。
hyq
2012-10-27 17:17:18 +08:00
@tioover
@wayn3h0
实际上我也知道在golang里面是可以获取到错误信息的,但是在调用golang库函数的时候,它到底返回的是个什么错误,文档里面却没说明白
wayn3h0
2012-10-27 18:19:28 +08:00
@hyq 你可以判断具体Error类型,错误类型都是实现Error接口的 如果文档没有说明,进代码看看就行了
hyq
2012-10-29 12:00:55 +08:00
@wayn3h0 看了一下代码,还是一片模糊,很多问题都不知道怎么解决,比如net.Dial连接服务器失败,根本不知道是因为网络问题,还是服务器没开放端口。不过只要它不崩溃就行了,可能是因为golang还不成熟吧,将就着用用
dndx
2012-10-29 13:02:53 +08:00
@tioover 没错,Go的设计者之一是C语言之父Ken Thompson(就是K&R里的K),所以这么做就不难理解了。
wayn3h0
2012-10-29 13:36:48 +08:00
@hyq please check dial.go & net.go src file

DNSConfigError AddrError UnknowNetworkError will be returned in error, and you can check timeout error or temporary error by Timerout() & Temporary() method(s)...
hyq
2012-10-29 13:40:11 +08:00
@wayn3h0 好吧,这个我也看到了,不过我还是想抱怨下,为什么不像java一样,把会返回的异常类型给列出来。文档里面都找不到
wayn3h0
2012-10-29 13:45:51 +08:00
好吧,又误点"感谢"

@hyq 引入异常机制和go的设计理念冲突
再说返回 Error接口和异常有什么不同?
wayn3h0
2012-10-29 13:47:00 +08:00
@hyq golang最大的不足在文档
hyq
2012-10-29 13:48:37 +08:00
@wayn3h0 我不是说他有问题,而是说文档里面为什么没说明会返回什么错误,这样造成了极大的不便
Alex_L
2012-10-29 16:14:44 +08:00
@dndx K&R里的K是Kernighan不是Ken
clowwindy
2012-10-29 16:35:38 +08:00
go 的文档是 python 风格的,要弄清楚不明确的地方,需要看源码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/51051

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX