Предположим, мне нужно вызвать удаленную службу 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 (...) '. –
Спасибо за предложение. Я постараюсь задать еще один вопрос. – Michael