OnErrorCall() dans vos applications

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

OnErrorCall() dans vos applications

Message 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())
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: OnErrorCall() dans vos applications

Message 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)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: OnErrorCall() dans vos applications

Message par venom »

Merci pour l'astuce falsam






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre