Précédent Index Suivant



Les exceptions


Caml-Light offre un mécanisme d'erreurs simple grâce au type exn.
exception Foo ;; 
exception Bar of int;;
Les exceptions sont des valeurs :
let to_foo = function an_exn -> match an_exn with
  | Bar _ -> Foo
  | an_exn -> an_exn ;;
marquées exceptionnelles (déclencher ou lever une exception) par  :

raise I

On peut récupérer une exception :
try E with | F ® EI
let v = 1 in
  try (let v = 2 in raise Foo) 
  with
   | Foo -> v 
;;
Soit E l'environnement courant. En particulier les motifs des clauses Fi doivent être des exceptions et les corps des clauses EIi doivent avoir des types compatibles avec sv.

Le filtrage n'a pas besoin d'être exhaustif,

on peut récupérer n'importe quelle exception.

c'est à éviter

Une exception marquée n'est plus une valeur :
let foo = function x -> 
  try (x+1) with 
    | Foo -> -1
;;
foo (raise Foo);;

Précédent Index Suivant