我是Scala的新手,現在正在嘗試完成一個練習。當函式回傳型別為Try[Price]時,如何回傳InvalidCartException
//Success: return the calculated price
//Failure: InvalidCartException
def calculateCartPrice(cart:Cart): Try[Price] = {
if(isCartValid(cart)) {
//Calculations happen here
return Try(Price(totalPrice));
}
}
def isCartValid(cart: Cart): Boolean = {
//THIS WORKS FINE
}
感謝您的幫助
uj5u.com熱心網友回復:
如果您的意思是“如何使Try
包含例外”,請使用Failure()
以下內容:
def calculateCartPrice(cart:Cart): Try[Price] = {
if(isCartValid(cart)) {
//Calculations happen here
Success(Price(totalPrice));
} else {
Failure(new InvalidCartException())
}
}
然后,給定一個Try
你可以getOrElse
用來獲取成功或拋出例外的值。
uj5u.com熱心網友回復:
Try
將為您捕獲例外,因此將可以引發例外的代碼放在那里。例如
def divideOneBy(x: Int): Try[Int] = Try { 1 / x}
divideOneBy(0) // Failure(java.lang.ArithmeticException: / by zero)
如果你擁有的是 aTry
并且你想在擁有 a 時拋出例外Failure
,那么你可以使用模式匹配來做到這一點:
val result = divideByOne(0)
result match {
case Failure(exception) => throw exception
case Success(_) => // What happens here?
}
Neophyte's Guide to Scala 為剛接觸 Scala的人提供了很多有用的資訊(我在學習時發現它非常寶貴)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/478892.html
上一篇:輸入只有2且大小為6似乎存在問題。其他一切似乎都按預期作業。為什么會這樣
下一篇:捕獲不回傳的dll函式