Page 1 sur 1

[R] RunErrorsFatal ( Solution )

Posté : mer. 08 juil. 2009 03:53
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.

Re: [..]RunErrorsFatal ( Solution )

Posté : mer. 08 juil. 2009 22:21
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

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 00:44
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

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 01:27
par Iste
comment ca ca fonctionne pas... je l'utilise :/
Quel est ta version d'autoit ?
Peux-tu développer "ca fonctionne pas" ?

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 03:43
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).

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 12:25
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 =)

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 13:20
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 ?

Re: [..]RunErrorsFatal ( Solution )

Posté : jeu. 09 juil. 2009 18:07
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é :)