Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai un comportement que je trouve anormal et je voudrais savoir si c'est une spécificité PB ou si il y a quelque chose à faire.
Je m'explique.
Dans une de mes méthodes, je fais un getItemString sur la row 0 (bouhhhh).
Le problème c'est que si je ne met pas un Try / Catch, il ne plante pas et il a un effet de bord (par exemple, il ne rentre pas dans l'événement Open de ma fenetre (je suis dans un Custom Visual Object).
Pour moi, une exception (RunTime Error dans ce cas), si elle n'est pas intercepté, dois remonter au niveau le plus haut, non ??
Est-ce une option dans PB a activer ou sur mon objet ?
Merci de votre aide car là, ca me fait peur si certaines exceptions sont "masquées"
Dernière modification par eric69 (17-01-2013 16:51:47)
Hors ligne
Salut,
Tu devrais recevoir le messagebox suivant : Invalid Datawindow row/column at line NN in (evt/fnc ) of object ..............
Il s'agit d'un <system Error>
Cdt
Yanis
Hors ligne
Malheureusement j'ai déjà eu plusieurs fois ce type de comportement, que ce soit en accédant à une ligne / colonne incorrecte ou encore en faisant un SetItem avec le mauvais datatype pour la valeur ; par exemple un setitem(row,ls_col, 42) alors que la colonne est de type string.
L'exception ne remonte pas (systématiquement) et peut entraîner des comportements anormaux comme tu le décris.
Dès fois un full build permet à ces exceptions de survenir mais pas toujours.
Hors ligne
tu peux pas simplement tester si t'as des roxs et ne faire ton getitem que si tu en as ?
parceque là je dirais que tu cherches un peu les problèmes exprès
Hors ligne
C'est le principe d'une erreur souvent. Une fois qu'on a trouvé l'erreur on se dit qu'on est con.
Moi ce qui me gène c'est que cela ne remonte pas et que ca plante silencieusement en faisant des effets de bord.
Hors ligne
ah d'accord je pensais que tu le faisait exprès le getItemString sur la row 0
Hors ligne
Salut,
Ma réponse est dans le cas ou un des arguments ( numéro de ligne ou de colonne ) est invalide. Pour ce qui concerne le setitem il est vrai que si tu mets un type de donnée différent de ce qui est attendu alors il n'y a pas de levée d'erreur et là je ne connais pas de moyen.
Cdt
Yanis
Hors ligne
Pour Yannis,
J'ai bien cette erreur mais uniquement si je met un try catch. Si je ne met rien, plantage silencieux
Hors ligne
Salut,
Dans quelle version de PB et quel BUILD tu es car normalement sur le getItemXXXX avec un numéro de ligne ou un nom de colonne invalid tu devrais toujours avoir cette erreur et sans mettre de try catch.
cdt
Yanis
Hors ligne
11.5
Build du 06/08/2008
Hors ligne
Salut,
Le message d'erreur remonte bien en version 11.5.
Ce à quoi je n'avais pas pensé c'est que tu ais du code dans l'événement systemError de ton objet application. Si tu as du code alors le message standart n'est plus affiché c'est à toi de le faire. Tu as en argument toutes les infos de l'erreur.
Cdt
Yanis
Hors ligne
tu es un génie !!!!!! Merci
Il y avait une ligne de code en commentaire dans cette méthode.
Une fois qu'on l'enleve, les exceptions remontent
Merci beaucoup
Hors ligne