Error context in error handling in Scala -
Error context in error handling in Scala -
suppose need phone call remote json/http service. create json request, send http server, , receive , parse json response.
suppose have info type myerrorfor errors , functions homecoming 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] = ... i can combine them write new function:
def invokeservice(url: url, requestdata: requestdata) result[responsedata] = { jsonrequest <- makejsonrequest(requestdata).right jsonresponse <- invoke(url, req).right responsedata <- parsejsonresponse(jsonresponse).right } yield responsedata now if parsejsonresponse fails ?
i error need whole context. need url, requestdata, , jsonrequest. how suggest me ?
if specific case create myerror trait (adt), , allow 1 of possible values jsonparsingfailed(jsonrequest, ...).
if it's more generic might utilize writer (or rather type mywriter[a] = writer[vector[mylogentry], a] , utilize eithert[mywriter, myerror, a]) "log event" @ every stage.
scala error-handling either
Comments
Post a Comment