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

)
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 !!...

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
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

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é
