next up previous contents index
Next: Flots Up: Utilisation des conditions Previous: Traiter une condition   Contents   Index

Signaler une condition

Plusieurs fonctions Common Lisp existent pour signaler une condition. Ces fonctions prennent comme argument un désignateur de condition. Ce désignateur peut être :

Dans le cas d'un symbole, des arguments facultatifs supplémentaires donnent des paramètres pour la création de la condition. Dans le cas d'une chaîne de caractères, des arguments facultatifs supplémentaires donnent des valeurs supplémentaires à fournir à format.

La manière la plus primitive de signaler une condition est d'utiliser la fonction signal. Elle renvoie nil si la condition n'est traitée par aucun traitant :

* (defun fact (n)
    (if (zerop n)
        (prog1 1 (signal 'error))
        (* n (fact (1- n)))))

FACT
* (fact 4)

24
* (handler-case (fact 4)
    (condition () "we have a problem"))

"we have a problem"
*

La fonction error est similaire à signal, mais si la condition n'est pas traitée, elle appelle de débogueur :

* (defun fact (n)
    (if (zerop n)
        (prog1 1 (error "something bad happened"))
        (* n (fact (1- n)))))

FACT
* (fact 4)

Error in function FACT:  something bad happened
encore des messages, puis l'invite du débogueur


next up previous contents index
Next: Flots Up: Utilisation des conditions Previous: Traiter une condition   Contents   Index
Robert STRANDH
2001-09-28