Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion exception

5 réponses
Avatar
Vbig
Bonjour

J'ai plusieurs niveau de traitement des exceptions
1 - Au niveau du projet
2 - Au niveau d'une fenetre principale
3 - Qlq traitement avec leur exception spécifique

Tout se passe très bien.

Mon problème se pose pour un traitement :
Je dois ouvrir une fenetre dont le nom est paramétrable.

WnomFen="<FenAOuvrir>"
Ouvre(WnomFen)

J'aimerai pouvoir gérer un message d'erreur local à ce traitement si
l'ouverture de la fenetre ne se fait pas correctement (Nom erroné ou
passage de paramètre incorrect)

Quand exception dans
Ouvre(WnomFen)
faire
erreur("Ouverture incorrect")
fin

Le problème de cette exception, c'est que si j'ai une erreur dans la
fenetre WnomFen, c'est celle-ci qui va être executée, "Ouverture
incorrect" alors que j'aimerai que celà soit le traitement d'exception
qu'il y avait avant (le traitement d'exception de la fenetre
principale)

Je tourne le problème dans tous les sens, je ne vois pas comment faire.
Je ne connais pas de traitement me permettant de gérer l'ouverture de
la fenetre sans plantage autre que la gestion d'exception, ni comment
rendre cette excetion local au traitement (que les sous processus
n'hérite pas de ce nouveau traitement d'exception)

J'espere avoir été clair et compréhensible :)

Si vous avez une solution, merci d'avance

5 réponses

Avatar
mat
Vbig wrote:
Je tourne le problème dans tous les sens, je ne vois pas comment faire.
Je ne connais pas de traitement me permettant de gérer l'ouverture de la
fenetre sans plantage autre que la gestion d'exception, ni comment
rendre cette excetion local au traitement (que les sous processus
n'hérite pas de ce nouveau traitement d'exception)




Bonjour,

dans un cas pareil, je préfère vérifier avant coup au lieu d'attendre
une erreur:

SI FenEtat(sWinName) = Inexistant ALORS ...

Salutations
Mat
Avatar
Vbig
mat a utilisé son clavier pour écrire :
Vbig wrote:
Je tourne le problème dans tous les sens, je ne vois pas comment faire.
Je ne connais pas de traitement me permettant de gérer l'ouverture de la
fenetre sans plantage autre que la gestion d'exception, ni comment rendre
cette excetion local au traitement (que les sous processus n'hérite pas de
ce nouveau traitement d'exception)




Bonjour,

dans un cas pareil, je préfère vérifier avant coup au lieu d'attendre une
erreur:

SI FenEtat(sWinName) = Inexistant ALORS ...

Salutations
Mat


Merci pour votre réponse,

fenetat(sWinName) me répondra toujours inexistant, vu que la fenetre
n'est pas censée être ouverte avant l'ouverture.
Si sWinName est un nom de fenetre inconnue dans le projet, il n'y a pas
d'erreur et renvoie également inexistant.

Je ne sais toujours pas si ouvre(sWinName) va provoquer ou non une
erreur 'grave' (exception) :) (pour nom erroné ou pour passage de
paramètre incorrect)
Avatar
mat
...

fenetat(sWinName) me répondra toujours inexistant, vu que la fenetre
n'est pas censée être ouverte avant l'ouverture.
Si sWinName est un nom de fenetre inconnue dans le projet, il n'y a pas
d'erreur et renvoie également inexistant.





en fait, ce n'est pas la solution que je pensais, mais l'observation
ci-dessus n'est pas correcte:

fenEtat("FenetreInexistant", Inexistant) provoque une erreur, donc une
structure comme celle-ci devrait bien marcher:

Quand exception dans
fenEtat(WnomFen, Inexistant)
faire
erreur("Ouverture incorrect")
sinon
Ouvre(WnomFen)
fin
Avatar
Vbig
mat avait énoncé :
...

fenetat(sWinName) me répondra toujours inexistant, vu que la fenetre n'est
pas censée être ouverte avant l'ouverture.
Si sWinName est un nom de fenetre inconnue dans le projet, il n'y a pas
d'erreur et renvoie également inexistant.





en fait, ce n'est pas la solution que je pensais, mais l'observation
ci-dessus n'est pas correcte:

fenEtat("FenetreInexistant", Inexistant) provoque une erreur, donc une
structure comme celle-ci devrait bien marcher:

Quand exception dans
fenEtat(WnomFen, Inexistant)
faire
erreur("Ouverture incorrect")
sinon
Ouvre(WnomFen)
fin



toujours pas celà :)
Ton code essaye d'ouvrir les fenetres qui sont déjà ouvertes.
fenEtat(WnomFen, Inexistant)


génère une exception si wnomfen est une fenetre non ouverte(que le nom
soit valide ou pas)
Avatar
mat
Vbig wrote:
...
toujours pas celà :)
Ton code essaye d'ouvrir les fenetres qui sont déjà ouvertes.
fenEtat(WnomFen, Inexistant)


génère une exception si wnomfen est une fenetre non ouverte(que le nom
soit valide ou pas)







je n'ai jamais aimé cette fonction... :-)

alors, tu peux toujours énumérer les fenêtres au début du projèt, mettre
la chaîne dans une constante et vérifier au moment voulu par Position().
Pas si élégant mais certain de fonctionner.