用法 一
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。