簡體   English   中英

Scala "Try" 返回類型和異常處理

[英]Scala "Try" return type and exception handling

我是Scala的新手,現在正在嘗試完成一個練習。 如何在 function 返回類型為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
}

感謝您的幫助

如果您的意思是“如何使Try包含異常” ,請使用如下所示的Failure()

def calculateCartPrice(cart:Cart): Try[Price] = {
    if(isCartValid(cart)) {
        //Calculations happen here
        Success(Price(totalPrice));
    } else {
        Failure(new InvalidCartException())
    }
}

然后,給定一個Try ,您可以使用getOrElse獲取成功的值或拋出異常。

Try會為你捕獲異常,所以把能拋出異常的代碼放在那里。 例如

def divideOneBy(x: Int): Try[Int] = Try { 1 / x}

divideOneBy(0) // Failure(java.lang.ArithmeticException: / by zero)

如果你有一個Try並且你想在遇到Failure時拋出異常,那么你可以使用模式匹配來做到這一點:

val result = divideByOne(0)

result match {
    case Failure(exception) => throw exception
    case Success(_) => // What happens here?
}

Neophyte's Guide to Scala 對剛接觸Scala的人有很多有用的信息(我在學習的時候發現它非常寶貴)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM