exn型,exception宣言
Not_found とか Division_by_zero とかいう例外は,じつは exn型のコンストラクタ。例外コンストラクタと呼ぶ。
コンストラクタの型を見ると
# Division_by_zero;;
- : exn = Division_by_zero
exn型であることがわかる。同様に raise の型も。
# raise;;
- : exn -> 'a = <fun>
exn型には後からコンストラクタを追加することができる。これが新しい例外を宣言することに相当し,exception宣言を使う。
# exception Other_exception;;
exception Other_exception
# Other_exception;;
- : exn = Other_exception
引数をとる例外の場合は of に続けて引数の型をかけばいい。
# exception Another_exception of string;;
exception Another_exception of string
# Another_exception "some error";;
- : exn = Another_exception "some error"
