比如,v := a(x).b(y).c(z)
,假如b(y)
出错了,如何不执行实现不运行c(z)
直接返回?
使用panic如果不recover整个程序就崩掉了,如果在b(y)里面recover还是要运行c(z),如果在外面recover就不优美了。
比如,v := a(x).b(y).c(z)
,假如b(y)
出错了,如何不执行实现不运行c(z)
直接返回?
使用panic如果不recover整个程序就崩掉了,如果在b(y)里面recover还是要运行c(z),如果在外面recover就不优美了。
其实 代码库里面用panic,但是不要用recover,然后在package main里面用recover就可以了。
在你写的链式调用的外部
defer func (){if err := recover(); err != nil { ... } }()
recover只在应用层的上层使用,而不要再底层使用,是不是要好一点呢?
2 回答1.4k 阅读
2 回答1.5k 阅读
2 回答1.3k 阅读
2 回答1.3k 阅读
3 回答899 阅读
2 回答1.1k 阅读
2 回答1.1k 阅读
看起来你需要 PHP 7 或者 Swift 的 Null coalescing operator 呢。当然了,这种东西 Haskell 也是良好支持的。