State.Exn
Interacting between monads and language exceptions
val expect :
?finally:(unit -> (unit, 's) t) ->
f:(unit -> ('a, 's) t) ->
catch:(exn -> ('a, 's) t) ->
('a, 's) t
expect ?finally ~f ~catch
evaluates f ()
, if an exception e
is raised during the evaluation (or call) then the result of whole computation will be catch e
. If an optional argument ?finally
is passed the finally
is called after f ()
computation or after catch e
if an exception was raised.