module Printexc:例外の表示sig
..end
val to_string : exn -> string
Printexc.to_string e
は例外 e
の文字列表現を返します。val print : ('a -> 'b) -> 'a -> 'b
Printexc.print fn x
は fn
を x
に適用し、その戻り値を返します。
fn x
の評価中に何らかの例外が発生した場合には、標準エラー出力に例外の名前を表示し、例外を再送出します。
典型的な使用法は、関数適用を素通りする例外を捕捉して報告することです。val catch : ('a -> 'b) -> 'a -> 'b
Printexc.catch fn x
は Printexc.print
とほぼ同じですが、例外を表示したあとにプログラムを終了コード 2 で終了させます。
この関数の使用は推奨されません
現在のランタイムシステムは Printexc.catch
と同様に捕捉されなかった例外を正確に表示します。
さらに、 Printexc.catch
を呼び出すと、デバッガやスタックトレースを使って例外の発生した位置を追跡するのが困難になります。
新しいコードでは Printexc.catch
を使わないでください。val print_backtrace : out_channel -> unit
Printexc.print_backtrace oc
はバックトレースを出力チャネル oc
に表示します。
バックトレースは、直近の例外がどこで発生し、関数呼び出しによりどのように波及してきたのかを列挙します。val get_backtrace : unit -> string
Printexc.get_backtrace ()
は、 Printexc.print_backtrace
が表示するのと同じバックトレース文字列を返します。val record_backtrace : bool -> unit
Printexc.record_backtrace b
は b = true
の場合、例外のバックトレースの記録を有効にし、 b = false
の場合、無効にします。
OCAMLRUNPARAM
環境変数を介して b
フラグを与えなかった場合には、初期状態ではバックトレースは記録されません。val backtrace_status : unit -> bool
Printexc.backtrace_status ()
は現在バックトレースが記録されていれば true
を返し、そうでなければ false
を返します。val register_printer : (exn -> string option) -> unit
Printexc.register_printer fn
は fn
を例外表示関数として登録します。
表示関数は与えられた例外を文字列に変換できない場合には None
を返し、変換できる場合には変換結果の文字列 s
を Some s
として返します。表示関数内で起こった例外は無視されます。
例外を文字列に表示するとき、表示関数は登録された順の逆に、いずれかの関数が Some s
なる値を返すまで順に呼び出されます(そのような関数が存在しなかった場合は、ランタイムシステムは汎用の表示関数を使います)。
Since 3.11.2