[..] Gestion des erreurs avec AutoIt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[..] Gestion des erreurs avec AutoIt

#1

Message 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
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..]Gestion des erreurs avec autoit

#2

Message 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
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..]Gestion des erreurs avec autoit

#3

Message 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
 
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..]Gestion des erreurs avec autoit

#4

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre