La méthode recommandée par la plupart des langages de programmation pour la gestion des
erreurs imprévisibles est l'utilisation d'exceptions. C'est le comportement par défaut de la
librairie Yoctopuce. Si une erreur se produit alors qu'on essaie d'accéder à un module, la
librairie va lancer une exception. Dans ce cas, de trois choses l'une:
• Si votre code attrape l'exception au vol et la gère, et tout se passe bien.
• Si votre programme tourne dans le debugger, vous pourrez relativement facilement
déterminer où le problème s'est produit, et voir le message explicatif lié à l'exception.
• Sinon... l'exception va crasher votre programme, boum!
Comme cette dernière situation n'est pas la plus souhaitable, la librairie Yoctopuce offre une
autre alternative pour la gestion des erreurs, permettant de faire un programme robuste sans
devoir attraper les exceptions à chaque ligne de code. Il suffit d'appeler la fonction
yDisableExceptions ()
chaque fonction sont systématiquement remplacées par des valeurs de retour particulières, qui
peuvent être testées par l'appelant lorsque c'est pertinent. Le nom de la valeur de retour en
cas d'erreur pour chaque fonction est systématiquement documenté dans la
librairie. Il suit toujours la même logique: une méthode
Y_STATE_INVALID
Y_CURRENTVALUE_INVALID
attendu, et ne sera pas un pointeur nul qui risquerait de faire crasher votre programme. Au
pire, si vous affichez la valeur sans la tester, elle sera hors du cadre attendu pour la valeur
retournée. Dans le cas de fonctions qui ne retournent a priori pas d'information, la valeur de
retour sera
YAPI_SUCCESS
Quand vous travaillez sans les exceptions, il est possible d'obtenir un code d'erreur et un
message expliquant l'origine de l'erreur en le demandant à l'objet qui a retourné une erreur à
l'aide des méthodes
errType ()
auraient été associées à l'exception si elles avaient été actives.
www.yoctopuce.com
pour commuter la librairie dans un mode où les exceptions de
,
une
méthode
get_currentValue
, etc. Dans tous les cas, la valeur retournée sera du type
si tout va bien, et un code d'erreur différent en cas d'échec.
et
errMessage ()
référence de la
retournera une valeur
get_state()
retournera
. Ce sont les même informations qui
une
valeur
31