首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scala中抛出异常,什么是“官方规则”

在Scala中抛出异常,什么是“官方规则”
EN

Stack Overflow用户
提问于 2012-10-15 04:33:39
回答 1查看 17.1K关注 0票数 51

我在Coursera上学习Scala课程。我也开始读奥德斯基的Scala书了。

我经常听到的是,在函数式语言中抛出异常并不是一个好主意,因为它会破坏控制流,并且我们通常会返回一个失败或成功的。看起来Scala 2.10也将提供朝这个方向发展的尝试。

但在这本书和课程中,Martin Odersky似乎并没有说(至少现在)异常是不好的,他经常使用它们。我还注意到了assert /require方法...

最后,我有点困惑,因为我想遵循最佳实践,但它们并不清楚,语言似乎是双向的……

有人能解释一下在哪种情况下我应该使用什么吗?

EN

回答 1

Stack Overflow用户

发布于 2012-10-15 06:36:41

因此,这是Scala为了与遗留语言和环境(特别是Java )轻松过渡/互操作性而特别权衡函数纯度的地方之一。函数的纯洁性被异常破坏了,因为它们破坏了引用完整性,使得不可能进行等式推理。(当然,非终止递归也会做同样的事情,但很少有语言愿意执行那些不可能实现的限制。)为了保持函数的纯洁性,您可以使用选项/可能/任一/尝试/验证,所有这些选项都将成功或失败编码为引用透明类型,并使用它们提供的各种高阶函数或底层语言特殊的monad语法来使事情更清晰。或者,在Scala中,您可以简单地决定放弃函数纯洁性,因为您知道这可能会在短期内使事情变得更容易,但在长期内会更加困难。这类似于在Scala中使用"null“,或可变集合,或局部”var“。有点丢人,而且不会做太多,但每个人都在截止日期之前。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12886285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档