module Exn: Exn
type t = exn 
include Pretty_printer.S
exception Finally of t * t
Raised when finalization after an exception failed, too.
    The first exception argument is the one raised by the initial
    function, the second exception the one raised by the finalizer.
exception Reraised of string * t
val reraise : t -> string -> 'a
val reraisef : t -> ('a, unit, string, unit -> 'b) Pervasives.format4 -> 'a
val to_string : t -> string
val to_string_mach : t -> string
val sexp_of_t : t -> Sexplib.Sexp.t
val protectx : f:('a -> 'b) -> 'a -> finally:('a -> unit) -> 'b
Executes f and afterwards executes finally, whether f throws an exception or
    not.
val protect : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a
val handle_uncaught : exit:bool -> (unit -> unit) -> unit
handle_uncaught ~exit f catches an exception escaping f and prints an error
    message to stderr.  Exits with return code 1 if exit is true.  Otherwise returns
    unit.
val handle_uncaught_and_exit : (unit -> Never_returns.never_returns) -> Never_returns.never_returns
behaves as handle_uncaught ~exit:true and also has a more precise
    type in this case
val reraise_uncaught : string -> (unit -> 'a) -> 'a
val backtrace : unit -> string
Printexc.get_backtrace
val sexp_of_t : t -> Sexplib.Sexp.t
Raised when finalization after an exception failed, too.
    The first exception argument is the one raised by the initial
    function, the second exception the one raised by the finalizer.
Executes f and afterwards executes finally, whether f throws an exception or
    not.
handle_uncaught ~exit f catches an exception escaping f and prints an error
    message to stderr.  Exits with return code 1 if exit is true.  Otherwise returns
    unit.
behaves as handle_uncaught ~exit:true and also has a more precise
    type in this case
Printexc.get_backtrace