用法 一
sealed abstract class Try[+T] extends Product with Serializable
Try
类型表示可能导致异常或返回成功计算值的计算.它类似于 scala.util.Either 类型,但在语义上有所不同。
Try[T]
的实例是 scala.util.Success [T] 或 scala.util.Failure [T] 的实例。
例如,Try
可用于对用户定义的输入执行除法,而无需在所有可能发生异常的地方显式执行 exception-handling。
例子:
import scala.io.StdIn
import scala.util.{Try, Success, Failure}
def divide: Try[Int] = {
val dividend = Try(StdIn.readLine("Enter an Int that you'd like to divide:\n").toInt)
val divisor = Try(StdIn.readLine("Enter an Int that you'd like to divide by:\n").toInt)
val problem = dividend.flatMap(x => divisor.map(y => x/y))
problem match {
case Success(v) =>
println("Result of " + dividend.get + "/"+ divisor.get +" is: " + v)
Success(v)
case Failure(e) =>
println("You must've divided by zero or entered something that's not an Int. Try again!")
println("Info from the exception: " + e.getMessage)
divide
}
}
的一个重要属性Try
在上面的例子中显示的是它的能力管道或链式操作,沿途捕获异常。这flatMap
和map
上例中的组合器本质上都传递了它们成功完成的值,包在Success
类型以使其由链中的下一个组合器进一步操作,或者包装在Failure
类型通常被简单地传递到链上。组合器如recover
和recoverWith
旨在在失败的情况下提供某种类型的默认行为。
注意: 只有非致命的异常被组合器捕获Try
(参考scala.util.control.NonFatal)。另一方面,将抛出严重的系统错误。
注意::除非文档中另有说明,否则所有 Try 组合子都会捕获异常并返回失败。
Try
在作为 Twitter 堆栈的一个组成部分使用多年后加入了 Scala 标准库。
相关用法
- Scala util.Using用法及代码示例
- Scala util.DynamicVariable用法及代码示例
- Scala util.Either用法及代码示例
- Scala unapplySeq()用法及代码示例
- Scala Tabulate.sliding用法及代码示例
- Scala ArrayBuffer.inits用法及代码示例
- Scala long.BitwiseOr用法及代码示例
- Scala StringBuilder.partitionMap用法及代码示例
- Scala List distinct()用法及代码示例
- Scala DefaultMap.sizeIs用法及代码示例
- Scala StrictOptimizedIterableOps.sliding用法及代码示例
- Scala Searching.SearchResult用法及代码示例
- Scala ::.collectFirst用法及代码示例
- Scala TreeSet diff()用法及代码示例
- Scala Char getClass()用法及代码示例
- Scala int.Min用法及代码示例
- Scala IntMap.groupMap用法及代码示例
- Scala Map3.mkString用法及代码示例
- Scala IterableOnceOps.flatMap用法及代码示例
- Scala IndexedSeqOps.lengthIs用法及代码示例
- Scala Map3.addString用法及代码示例
- Scala WrappedString.scanRight用法及代码示例
- Scala String compareToIgnoreCase()用法及代码示例
- Scala List drop()用法及代码示例
- Scala ofDouble.inits用法及代码示例
注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 util.Try。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。