OCaml には例外処理の仕組みがある。例外を発生させるには raise を使う。raise は例外の名前を引数にとる。
fact関数の引数が負の時に例外を発生する例:
# let rec fact n = if n < 0 then raise (Invalid_argument "fact: negative argument") else if n = 0 then 1 else n * fact (n - 1) ;; val fact : int -> int = <fun>
例外は関数の型とは関係がないので,気にせずに使える。
# fact (-2);; Exception: Invalid_argument "fact: negative argument".