Restaurer Err

pben Messages postés 6 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 mars 2011 - 10 mars 2011 à 10:45
pben Messages postés 6 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 mars 2011 - 10 mars 2011 à 14:14
Dans une fonction Mafonction j'ai besoin de restaurer en sortie le Err tel qu'il était à l'entrée de ma fonction. J'ai fais un truc qui ressemble à celà :

Function Mafonction()

Dim errNumber As Long
Dim errDescription As String
'mémo
errNumber = Err.number
errDescription = Err.Description

On Error Resume Next
'''''''''''
''' ici le code de ma fonction (qui peut modifier le Err)
'''''''''''
On Error GoTo 0
'on restaure
If errNumber <> Err.number Then
Err.number = errNumber
Err.Description = errDescription
End If

End Function

Cela marche sauf que dans du code où j'utilise des APIs cela occasionne un plantage sévère : VB se crashe !

Connaissez-vous une autre façon de faire ?

4 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 mars 2011 à 11:32
Function Mafonction()
On Error Resume Next
'''''''''''
''' ici le code de ma fonction (qui peut modifier le Err)
'''''''''''
Err.clear
End Function

juste avec ça ça marchera pas besoin de toute ton usine à gaz
mais le mieux serait quand même de gérer les erreurs quand elles se produisent plutôt que de les masquer
et aussi d'écrire un code propre qui ne génère pas d'erreur


si c'est la solution, penser : REPONSE ACCEPTEE
0
pben Messages postés 6 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 mars 2011
10 mars 2011 à 13:56
le Err.clear que tu utilises à la fin efface les erreurs. Hors moi je veux retrouver le Err tel qu'il existait au début de la routine (c'est pour ne pas perturber le programme appelant qui peut avoir besoin de traiter cet Err).
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 mars 2011 à 14:08
quand tu rentres dans une sub le err.number est égal à Zéro dans cette sub meme si il a une valeur différente dans la sub appelante


si c'est la solution, penser : REPONSE ACCEPTEE
0
pben Messages postés 6 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 10 mars 2011
10 mars 2011 à 14:14
non le err.number n'est pas remis à zéro quand tu rentres dans une fonction (je viens de réessayer).
0
Rejoignez-nous