【发布时间】:2012-10-04 21:01:01
【问题描述】:
我正在关注 Coursera 上的 Scala 课程。 我也开始阅读 Odersky 的 Scala 书。
我经常听到的是,在函数式语言中抛出异常并不是一个好主意,因为它会破坏控制流,并且我们通常会返回带有失败或成功的 Either。 Scala 2.10 似乎也将提供朝着这个方向发展的 Try。
但在本书和课程中,Martin Odersky 似乎并没有说(至少现在)异常是不好的,他经常使用它们。 我还注意到方法 assert / require...
最后我有点困惑,因为我想遵循最佳实践,但它们并不清楚,而且语言似乎是双向的......
谁能解释我在这种情况下应该使用什么?
【问题讨论】:
-
我认为你越偏向于纯函数式 haskell/scalaz 方面,你就会越多地使用 Either/Try。从异常转移到 Either 是一个连续统一体,很难说它们之间的界限在哪里。
-
好问题,我也对他到处使用异常抛出感到惊讶。但这是真的,
Nothing类型对于多态来说有点优雅。 -
我问了一个类似的问题:stackoverflow.com/questions/13012149/…(感谢 om-nom-nom 的链接)
标签: scala exception try-catch either