Page 1 sur 1

[..] Gestion des erreurs avec AutoIt

Posté : jeu. 23 avr. 2009 15:02
par jcaspar
B :D onjour à tous !

Je souhaiterais apprendre à gérer les erreurs avec autoit
pouvez vous svp m'indiquer quel est la bonne manière de
procéder avec si possible un exemple de code ?

Merci d'avance pour vos explications :P :P
Jean Marc

Re: [..]Gestion des erreurs avec autoit

Posté : jeu. 23 avr. 2009 15:16
par jbnh
Le meilleur moyen me semble être la macro @error :

Code : Tout sélectionner

if not @error =0 then
msgbox(16,"Erreur","Erreur sur la fonction XXX")
exit 
Endif
Aussi scite peut aider avec la vérification de la syntaxe

Re: [..]Gestion des erreurs avec autoit

Posté : jeu. 23 avr. 2009 17:10
par GaRydelaMer
Bonjour

je complète un peu.

La gestion des erreurs dépends avant tout de quelle erreur on parle.
- La syntaxe, rien sous AutoIt, mais scite lui te donnera la ligne qui pose 1 pb.
- Erreur à l'exécution, comme dis avant, les macros @Error et @Extend et la c'est à toi de tout coder.
- Mais certaine erreur ne sont pas gérer par AutoIt, par exemple quand tu utilises des Objets Com, accès a une base ou l'éxécution d'une requête.
LA il te faut explicitement dire à ton objet et à AuotIt de la gérer généralement chaque objet à un retour en cas d'erreur donc récupérer cet évènement et le faire traiter par une de tes fonctions.

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $EventError = 0
Func MyErrFunc()
    Local $msg, $HexNumber = Hex($oMyError.number, 8)
    Switch $HexNumber
        Case "_80020009"
            $msg = MsgBox(4 + 16, " Erreur " & $oMyError.scriptline, _
                    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
                    "Risque de doublons" & @LF & @LF & "continuer ?")
            SetError(1, 1)
        Case Else
            $msg = MsgBox(4 + 16, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _
                    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
                    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
                    "err.number is: " & @TAB & $HexNumber & @CRLF & _
                    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
                    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
                    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
                    "err.helpcontext is: " & @TAB & $oMyError.helpcontext & @CRLF & @CRLF & _
                    "Continuer ???")
            SetError(1, 9)
    EndSwitch
    If $msg <> 6 Then Exit
EndFunc   ;==>MyErrFunc
 

Re: [..]Gestion des erreurs avec autoit

Posté : jeu. 23 avr. 2009 23:49
par orax
Je ne sais pas non plus comment bien les gérer mais si ça peut vous aider j'utilise cette fonction pour afficher certains éléments en cas d'erreur. DllCall("kernel32.dll", "none", "OutputDebugString"... affiche l'erreur dans "DebugView" de Sysinternals http://technet.microsoft.com/en-us/sysi ... fault.aspx.
Ce que j'utilise parfois, c'est des constantes pour désigner l'erreur :

Code : Tout sélectionner

Global Enum _
    $ERR_TRUC, _
    $ERR_MACHIN, _
    $ERR_ETC
► Afficher le texte