假設我需要調用遠程JSON/HTTP服務。我做了一個JSON請求,通過HTTP發送給服務器,並接收和解析JSON響應。Scala錯誤處理中的錯誤上下文
假設我有錯誤的數據類型MyError
和我所有的函數返回Either[MyError, R]
type Result[A] = Either[MyError, A]
def makeJsonRequest(requestData: RequestData): Result[String] = ...
def invoke(url: URL, jsonRequest: String): Result[String] = ...
def parseJsonResponse(jsonResponse: String): Result[ResponseData] = ...
我可以將它們寫一個新功能:
def invokeService(url: URL, requestData: RequestData) Result[ResponseData] = for {
jsonRequest <- makeJsonRequest(requestData).right
jsonResponse <- invoke(url, req).right
responseData <- parseJsonResponse(jsonResponse).right
} yield responseData
現在如果parseJsonResponse
失敗是什麼?
我得到的錯誤,但我也需要整個上下文。那是我需要url
,requestData
和jsonRequest
。你會如何建議我這樣做?
不知道我確切地理解你在問什麼,但是你可以用'.left.map(...)'在左邊的任何一個上映射。 – 2014-10-30 19:04:48
感謝您的建議。我會試着就此提出另一個問題。 – Michael 2014-10-31 16:34:37