Page 1 sur 1

OnErrorCall() dans vos applications

Publié : mar. 16/juil./2019 15:14
par falsam
Vous distribuez l’exécutable de votre application et parfois c'est le drame .... "Ca plante" et vous ne savez pas ou !

Il est bon de le rappeler, la solution consiste à mette un gestionnaire d'erreur qui va vous indiquez la nature de l'erreur et le numéro de ligne ou cela se produit comme vous le montre ce petit code de démonstration.

Code : Tout sélectionner

Declare ErrorHandler()

OnErrorCall(@ErrorHandler())

PokeS(10, "Hello World") ;Ca va planter

Procedure ErrorHandler()
  MessageRequester("Ooops", "The following error happened: " + ErrorMessage(ErrorCode()) + #CRLF$ +"line : " +  Str(ErrorLine()))
EndProcedure
- Désactiver le debugger
- Cocher la case [] Activer le numéro de ligne pour "OnError" dans les préférences du compilatgeur.
- Créer votre exécutable et lancer le.

La déclaration est à mettre au début de vôtre code

Code : Tout sélectionner

Declare ErrorHandler()
OnErrorCall(@ErrorHandler())

Re: OnErrorCall() dans vos applications

Publié : mar. 16/juil./2019 19:23
par Shadow

Code : Tout sélectionner

OnErrorGoto(?Erreur) ; A placer au tous début du code

; A placer complètement à la fin du code

End

Erreur:

Select ErrorCode()
    
  Case #PB_OnError_InvalidMemory ; Lecture ou écriture dans une zone protégée.
    MessageErreur$ = "Lecture ou écriture dans une zone mémoire protégée."
    
  Case #PB_OnError_Floatingpoint ; Erreur de calcul flottant.
    MessageErreur$ = "Erreur de calcul flottant."
    
  Case #PB_OnError_Breakpoint ; Point d'arrêt débogueur atteint (autres que ceux du PureBasic.
    MessageErreur$ = "Point d'arrêt du débogueur atteint."
    
  Case #PB_OnError_IllegalInstruction ; Exécution d'une instruction invalide.
    MessageErreur$ = "Instruction rencontrer invalide."
    
  Case #PB_OnError_PriviledgedInstruction ; Exécution d'une instruction privilégiée (system-) non autorisée.
    MessageErreur$ = "Instruction rencontrer privilégiée system non autorisée."

  Case #PB_OnError_DivideByZero ; Division par zéro (Windows seulement).
    MessageErreur$ = "Division par zéro."
    
EndSelect

MessageRequester("Erreur critique", "      Le programme a rencontrer un problème et dois fermer !" + Chr(13) + "      Imformation sur l'erreur: " + Chr(13) + Chr(13) + "      " + MessageErreur$, 16)

Re: OnErrorCall() dans vos applications

Publié : mer. 17/juil./2019 22:31
par venom
Merci pour l'astuce falsam






@++