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

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -