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 myerror
for 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