Scala 函数式与面向对象编程深入解析
1. 函数式编程中的错误处理
在函数式编程里,错误处理是一个关键部分。传统上,异常抛出是处理错误的常见方式,但这种方式在某些场景下存在问题,比如在并发编程中,调用者可能无法捕获异步代码抛出的异常。Scala 提供了几种类型来更优雅地处理错误。
1.1 Either 类型
Either 类型可以用来表示可能成功或失败的结果。以下是一个示例:
def addInts2(s1: String, s2: String): Either[NumberFormatException,Int]=
try {
Right(s1.toInt + s2.toInt)
} catch {
case nfe: NumberFormatException => Left(nfe)
}
println(addInts2("1", "2")) // Right(3)
println(addInts2("1", "x")) // Left(java.lang.NumberFormatException: For input string: "x")
println(addInts2("x", "2")) // Left(java.lang.NumberFormatException: For input string: "x")
这里, Either 类型的签名表明了可能的失败模式。通过返回异常作为值,我们可以更好地控制调用栈,并且让 API 的使用者更
超级会员免费看
订阅专栏 解锁全文
73

被折叠的 条评论
为什么被折叠?



