salut à tous,
j'ai un chtit pb que je n'arrive pas à réglé et j'ai beau chercher sur le net je ne trouve pas pourquoi ça marche pas.
J'essai simplement de remonter une erreur de la façon suivante :
j'ai 2 modules de classe classe1 et classe2 et je fais :
dans la classe1, j'ai une fonction :
et dans la classe2, il y a 2 fonctions : b et c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sub a() on error goto Erreur set cl2 = new classe2 call classe2.b() Erreur: msgBox("coucou A") end sub
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 sub b() on error goto Erreur call c() Erreur: msgBox("coucou B") err.raise err.number,err.source,err.description end sub
l'erreur de c() est récupérée dans b() et donc affiche "coucou B", j'essai alors de regénérer la meme erreur de façon à ce que a() la récupère et puisse utiliser err.number, seulement, sur le err.raise de b(), l'erreur s'affiche dans une boite de débug (style plantage) et a() ne la récupère pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sub c() a=1/0 end sub
Est-ce que le pb vient du fait qu'il s'agit 2 classes différente? pourtant la msdn dit que err a une portée globale donc devrait etre accessible partout.
et si je ne lève pas l'exception dans b(), au débug, le code revient dans a() mais err ne vaut rien si je la regarde dans l'espion.
est-ce que quelqu'un saurait comment je peux récupérer l'erreur de c() dans a()?
merci de vos réponses et désolé, je ne suis pas un expert VB
Partager