ocaml/stdlib/printexc.mli

60 lines
2.8 KiB
OCaml

(***********************************************************************)
(* *)
(* Objective Caml *)
(* *)
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 1996 Institut National de Recherche en Informatique et *)
(* en Automatique. All rights reserved. This file is distributed *)
(* under the terms of the GNU Library General Public License, with *)
(* the special exception on linking described in file ../LICENSE. *)
(* *)
(***********************************************************************)
(* $Id$ *)
(** Facilities for printing exceptions. *)
val to_string : exn -> string
(** [Printexc.to_string e] returns a string representation of
the exception [e]. *)
val print : ('a -> 'b) -> 'a -> 'b
(** [Printexc.print fn x] applies [fn] to [x] and returns the result.
If the evaluation of [fn x] raises any exception, the
name of the exception is printed on standard error output,
and the exception is raised again.
The typical use is to catch and report exceptions that
escape a function application. *)
val catch : ('a -> 'b) -> 'a -> 'b
(** [Printexc.catch fn x] is similar to {!Printexc.print}, but
aborts the program with exit code 2 after printing the
uncaught exception. This function is deprecated: the runtime
system is now able to print uncaught exceptions as precisely
as [Printexc.catch] does. Moreover, calling [Printexc.catch]
makes it harder to track the location of the exception
using the debugger or the stack backtrace facility.
So, do not use [Printexc.catch] in new code. *)
val print_backtrace: out_channel -> unit
(** [Printexc.print_backtrace oc] prints an exception backtrace
on the output channel [oc]. The backtrace lists the program
locations where the most-recently raised exception was raised
and where it was propagated through function calls. *)
val get_backtrace: unit -> string
(** [Printexc.get_backtrace ()] returns a string containing the
same exception backtrace that [Printexc.print_backtrace] would
print. *)
val record_backtrace: bool -> unit
(** [Printexc.record_backtrace b] turns recording of exception backtraces
on (if [b = true]) or off (if [b = false]). Initially, backtraces
are not recorded, unless the [b] flag is given to the program
through the [OCAMLRUNPARAM] variable. *)
val backtrace_status: unit -> bool
(** [Printexc.backtrace_status()] returns [true] if exception
backtraces are currently recorded, [false] if not. *)