Bonjour, En cas d'erreur ou d'interruption lors de l'exécution, l'interpréteur LISP appelle automatiquement la fonction *error*, en lui passant comme argument un message d'erreur. La fonction *error* par défaut ne fait a priori pas grand chose, à part afficher dans la ligne de commande le message d'erreur reçu en argument. Pour mettre en place ta propre gestion d'erreurs, il te suffit donc de redéfinir la fonction *error*. Voici un exemple basique: (defun *error* (errmsg)
(setvar "osmode" accro)
(setvar "cmdecho" echo)
(if errmsg
(print errmsg)
)
(princ)
) Mais il faut aussi penser à restaurer la fonction *error* par défaut une fois l'exécution de ton programme terminée, tout comme tu restaures les variables OSMODE et CMDECHO. Pour cela, le plus simple est de déclarer dans ton programme une variable locale *error*, et de redéfinir la fonction *error* localement (à l'intérieur même de ton programme). Ainsi elle remplacera la fonction *error* par défaut durant l'exécution de ton programme, puis sera automatiquement détruite. Par exemple: (defun c:cdernier (/ *error* ss1 ang dist0 dist1 pt1 pt2 echo accro)
(defun *error* (errmsg)
(setvar "osmode" accro)
(setvar "cmdecho" echo)
(princ errmsg)
)
(princ "\Copie depuis dernier point :\n")
(princ)
(setq echo (getvar 'cmdecho)
accro (getvar 'osmode))
...
)