Scala函数式编程:我应该使用'throw'还是'throw new'?

13 浏览
0 Comments

Scala函数式编程:我应该使用'throw'还是'throw new'?

在Scala中进行一些函数式编程时,由于我的Java背景,我倾向于像这样抛出异常:

throw new MyException("something is wrong")

然而,我也看到有人省略了new

throw MyException("something is wrong")

哪种方式更符合惯用法?

0
0 Comments

在Scala函数式编程中,应该使用'throw'还是'throw new'?这个问题的出现是因为Scala是一种函数式语言,函数应该返回值而不是产生副作用。而异常就属于副作用。解决方法是避免使用异常,而是使用'Either'代替。'Either'可以让你定义一个成功路径和一个失败路径。

另外,还某些情况下了'Try'和'Success'。但是,这里的建议是使用'Either',因为它更广泛地用于解决问题。

在Scala 2.11中,'Try'已经得到了适当的支持,并具有支持有用语义的功能。而在Scala 2.12中,'Either'也进行了改变,现在对更一般的用法有了良好的支持。因此,建议使用'Either'作为解决方法。

0