Module Exninfo
Additional information worn by exceptions.
type iexn
= exn * info
Information-wearing exceptions
val make : unit -> 'a t
Create a new piece of information.
val null : info
No information
val info : exn -> info
Retrieve the information of the last exception raised.
val get_backtrace : info -> backtrace option
get_backtrace info
does get the backtrace associated to info
val backtrace_to_string : backtrace -> string
backtrace_to_string info
does get the backtrace associated to info
val record_backtrace : bool -> unit
val capture : exn -> iexn
Add the current backtrace information to the given exception.
The intended use case is of the form:
try foo with | Bar -> bar | exn -> let exn = Exninfo.capture err in baz
where
baz
should re-raise usingiraise
below.WARNING: any intermediate code between the
with
and the handler may modify the backtrace. Yes, that includeswhen
clauses. Ideally, what you should do is something like:try foo with exn -> let exn = Exninfo.capture exn in match err with | Bar -> bar | err -> baz
I admit that's a bit heavy, but there is not much to do...
val iraise : iexn -> 'a
Raise the given enriched exception.
val reify : unit -> info