Documentation‎ > ‎Articles‎ > ‎

Gestion des erreurs

publié le 3 juin 2011 à 20:13 par REBOL FRANCE   [ mis à jour : 4 juin 2011 à 14:30 ]

REBOL offre une gestion des erreurs comme tout langage de programmation moderne, avec la possibilité via le mot clé try de trapper une erreur :

if error? err: try [
    value: 1 / 0
][
    err: disarm err
    either err/id = 'zero-divide [value: 0] [probe err quit]
]
print value


Néanmoins, il pourra vous arriver d'expérimenter le message d'erreur suivant :

** Script Error: err needs a value
** Where: my-function
** Near: if error? err: try [
    do commands
]

Pourquoi ?

Et bien, cette erreur se produit lorsque try retourne aucune valeur (autrement dit unset!). 
C'est le cas avec print ou if (avec une condition fausse) en dernière instruction

Pour contourner le problème, voici une petite astuce (de coccinelle et RebKodeur du forum RebelBB) :

if error? set/any 'err try [
    ; code
][
    probe disarm err
]


Nicolas

Comments