Page 1 sur 3

Comment intercepter les message d'erreurs...

Publié : ven. 10/mars/2017 23:19
par Shadow
Bon soir,

Comment faire pour intercepter les messages d’erreur dans l'id de PB, vous savez en bas de l'éditeur...
Y à ton accès avec du code PB ?

Par exemple si j’essaie de faire:

Code : Tout sélectionner

Debug Point(10, 45)
Un message apparais et la ligne en question deviens rouge
j'aimerais intercepter tous ça, c'est possible ?

Savoir le message d’erreur, la ligne aussi.

Re: Comment intercepter les message d'érreurs...

Publié : sam. 11/mars/2017 0:14
par Mindphazer
OnErrorCall ou OnErrorGoto
Et ErrorLine()

RTFM

Re: Comment intercepter les message d'érreurs...

Publié : sam. 11/mars/2017 0:22
par falsam
A mon avis c'est en ligne de commande qu'il souhaite une compilation.

Re: Comment intercepter les message d'érreurs...

Publié : sam. 11/mars/2017 9:16
par Shadow
Mindphazer merci mais non c'est pas ça :)

Dans PB ya 4 choses je crois bien:

Les erreur de code dans PB: Editor.catalog
Les erreur de code dans Libraries.catalog
Les erreur de code dans Debugger.catalog
Les erreur de code dans Compiler.catalog

Je sais pas si je suis clair en faite :?
Je voudrait intercepter TOUTES ERREURS de code.

J'ai l'impression que je suis limité avec le debugeur (pbcompiler), toutes les erreurs ne sont pas reportées.
Si vous faite par exemple dans l'id de PB:

Code : Tout sélectionner

Debug Point(56, 78)
Une erreur est soulevé !, je ne pense pas que ça vienne de (pbcompiler) car lui va dire que c'est ok.
Peut être Libraries...

pbcompiler n'est pas le compilateur en mode commandes n'est ce pas ?
Je ne sais pas utiliser le compilateur en mode de commande si c'est ça.
Peut être que lui a plus d'option ?

Re: Comment intercepter les message d'érreurs...

Publié : sam. 11/mars/2017 11:00
par Marc56
Shadow a écrit :Je ne sais pas utiliser le compilateur en mode de commande si c'est ça.
:?:

:arrow: « Utiliser le compilateur en ligne de commande »

Re: Comment intercepter les message d'érreurs...

Publié : sam. 11/mars/2017 21:40
par Shadow
Oui bon alors ça je connais effectivement.
Mais ça ne résous pas mon problème !

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 8:10
par Fred
C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 14:31
par Shadow
Fred a écrit :C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)
Ok donc une fois exécuté après la compilation donc si j'ai bien compris.
Est ce que je dois utiliser les fonction RunTime pour accéder à ses erreur et si oui comment je peu faire ça ?
Merci Fred.

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 17:47
par JohnJohnsonSHERMAN
Tu peux utiliser la librairie OnError pour cela, elle impacte légérement la vitesse d'exécution mais permet de renseigner sur une erreur d'exécution sans utilisation du débogueur :)

Je te laisse consulter la documentation à ce sujet :P

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 18:26
par Shadow
J'ai déjà fais ça et ça ne fonctionne pas !

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 19:22
par SPH
Shadow a écrit :J'ai déjà fais ça et ça ne fonctionne pas !
Peut etre que tu t'y prend mal :idea:

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 19:53
par Shadow
Sait tu au moins de quoi tu parle :?:
Non je ne m'y prends pas mal, rien à voir ici.

Le compilateur n'intercepte et ne reporte pas certaine erreurs.

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 20:46
par falsam
Je ne fais pas de compilation en ligne de commande. Mais je ferais comme ceci.

- Ne pas activer le déboguer/

- Dans les paramètres de compilation EN LIGNE ajoute /LINENUMBERING ce qui permet à la bibliothèque OnError d'indiquer le fichier et le numéro de ligne en cas d'erreur.

- Lors de ta compilation en ligne crée un source qui contiendra le code à compiler en ligne précédé de ces quelques lignes de code.

Code : Tout sélectionner

Procedure ErrorHandler()
  Protected ErrorLine = ErrorLine() - 6
  MessageRequester("OnError test", "The following error happened: " + ErrorMessage() + #CRLF$ + "Line " + Str(ErrorLine))
EndProcedure
OnErrorCall(@ErrorHandler())
;Code source à ajouter après ce commentaire
Ce qui donnera avec ton exemple Point(10, 45)

Code : Tout sélectionner

Procedure ErrorHandler()
  Protected ErrorLine = ErrorLine() - 6
  MessageRequester("OnError test", "The following error happened: " + ErrorMessage() + #CRLF$ + "Line " + Str(ErrorLine))
EndProcedure
OnErrorCall(@ErrorHandler())
;Code source à ajouter aprés ce commentaire
Point(10, 45)
Tu peux tester ça avec l'éditeur.

1 - Désactive le déboguer
2 - Paramètre de compilation : Coche la case Enable OnError lines support.
3 - F5 et tu auras le message : The following error happened : invalid memory access Line 1

PS Désolé pour l'anglais.

Re: Comment intercepter les message d'érreurs...

Publié : dim. 12/mars/2017 22:22
par Shadow
Merci beaucoup Falsam :)

Re: Comment intercepter les message d'erreurs...

Publié : mar. 14/mars/2017 15:40
par Shadow
Bien maintenant j'aimerais pousser encore plus loin.

Avec cette méthode, j'ai bien le retour des erreur, Compilation et Exécution.
Cependant, jme pose toujours la question, comment fait l'id...

Par exemple pour ce code-ci:

Code : Tout sélectionner

Point(10, 45)
Avec mon code j'ai un IMA, ok bon mais c'est pas encore assez précis.
Dans L'id c'est dit:
StartDrawing() Doit être appelée avant une autre fonction 2DDraiwing.
Bon et comment il fait pour savoir ça ?
Fred à dit:
C'est une erreur runtime, qui apparait que lorsque le programme est executé (pas à la compilation)
Si je pouvais avoir plus d'information, voir un exemple ça aiderais bien.