[R] RunErrorsFatal ( Solution )

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
OverSlek
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 07 juil. 2009 20:21
Status : Hors ligne

[R] RunErrorsFatal ( Solution )

#1

Message par OverSlek »

Bonjour Bonjour =)

J'aimerai savoir comment remplacer le RunErrorsFatal qui allé avec l'OPT ...

J'aimerai donc savoir comment virer ces foutus -1 ;p
Car une fois viré, soit sa crash, et mon rebooteur prend la reléve ...

Soit il continue dans le script ^^
( J'ai déja ajouté la fonction avec la gestion d'erreur personnelle, mais le -1 est toujours la :x )

Vala vala ;p merci.
Modifié en dernier par OverSlek le ven. 28 août 2009 06:50, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#2

Message par Iste »

Voici le code que Orax ma une foi passé

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $EventError = 0

Global $a

$a.erf ; provoque une erreur
MsgBox(0,"","héhé !")

Func MyErrFunc()
    Local $msg, $HexNumber = Hex($oMyError.number, 8)
    Switch $HexNumber
        Case "_80020009"
;~          $msg = _
;~                  "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
;~                  "Risque de doublons" & @LF & @LF & "continuer ?"
            SetError(1, 1)
        Case Else
            $msg = _
                    "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
            SetError(1, 9)
    EndSwitch
    
    ; gestion de l'erreur
    $file = FileOpen("erreurs.log", 1)
    If $file = -1 Then
        MsgBox(0, "Error", "Unable to open file.")
        Exit
    EndIf
    FileWrite($file, $msg)
    FileClose($file)
    
    ; on quitte ???
;~  If $msg <> 6 Then Exit -1
EndFunc   ;==>MyErrFunc
IL remplace le message d'erreur par défaut par... ce que tu veux, donc pourquoi pas un shellexecute(@ScriptFullPath) :p
Signez ici
OverSlek
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 07 juil. 2009 20:21
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#3

Message par OverSlek »

Yop =)

J'avais déjà essayé cette solution, qui ne fonctionne pas ;)
Essaye de la mettre dans un fichier, et lance :)

Tu verras ;)

Une autre solution? ;p

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $EventError = 0

Global $a
; Erreur volontaire
$GTmax = 'test'
$nbrGTT = $GTmax[0]

Func MyErrFunc()
    Local $msg, $HexNumber = Hex($oMyError.number, 8)
    Switch $HexNumber
        Case "_80020009"
;~          $msg = _
;~                  "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
;~                  "Risque de doublons" & @LF & @LF & "continuer ?"
            SetError(1, 1)
        Case Else
            $msg = _
                    "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
            SetError(1, 9)
    EndSwitch
   
    ; gestion de l'erreur
    $file = FileOpen("erreurs.log", 1)
    If $file = -1 Then
        MsgBox(0, "Error", "Unable to open file.")
        Exit
    EndIf
    FileWrite($file, $msg)
    FileClose($file)
   
    ; on quitte ???
;~  If $msg <> 6 Then Exit -1
EndFunc   ;==>MyErrFunc
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#4

Message par Iste »

comment ca ca fonctionne pas... je l'utilise :/
Quel est ta version d'autoit ?
Peux-tu développer "ca fonctionne pas" ?
Signez ici
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#5

Message par orax »

C'est vrai en plus, OverSlek a raison : mon script (enfin... ce n'est pas le mien, je l'avais copié !) ne fonctionne pas !!... Image
Essayez l'exemple de code de OverSlek. Enfin si... il fonctionne avec les objets, par exemple :

Code : Tout sélectionner

Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc"), $EventError = 0
Global $a
$a.erf ; provoque une erreur qui sera interceptée par la fonction MyErrFunc
$a[1]="arf" ; provoque une erreur qui fera planter le script ! :o(
Il y en a un(e) qui a posé la même question sur le forum anglais, mais vu que je n'ai rien compris... voici le lien : autoitscript.com/...RunErrorsFatal

Voici une solution à votre problème : viewtopic.php?p=16911 Image

Une autre solution, un peu barbare, serait de relancer le script dès qu'il plante (pas besoin d'avoir deux scripts, ça peut se faire avec un seul).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
OverSlek
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 07 juil. 2009 20:21
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#6

Message par OverSlek »

orax a écrit : Une autre solution, un peu barbare, serait de relancer le script dès qu'il plante (pas besoin d'avoir deux scripts, ça peut se faire avec un seul).
Seulement, il ne plante pas d'ou mon problème ...
J'ai cette foutu MsgBox ...

Après je peux toujours essayer de la détecter via un autre script ...

Iste => Ca me laisse la MsgBox par défaut ...
J'utilise la dernière version d'autoit stable en date =)
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#7

Message par tolf »

Sinon, la solution est de s'arranger pour bien coder le script de sorte qu'il ne plante pas :mrgreen:
Quelles sortes d'erreurs provoquent le -1 dans votre cas ?
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
OverSlek
Niveau 2
Niveau 2
Messages : 19
Enregistré le : mar. 07 juil. 2009 20:21
Status : Hors ligne

Re: [..]RunErrorsFatal ( Solution )

#8

Message par OverSlek »

Des erreurs d'array.

Que je viens de corriger avec des IsArray() ...
D'ailleurs je vais me coder une fonction marre de foutre des If partout xD

Code : Tout sélectionner

Func varray($lui, $nbr, $valeur = 0)
    
    If IsArray($lui) Then 
        return $lui[$nbr]
    Else
        return $valeur
    EndIf
    
EndFunc
Soucis réglé :)
Répondre