Pourquoi voudrais-je sortir d'un gestionnaire d'erreurs (après la manipulation) avec un Sub de sortie au lieu de simplement le laisser aller au Sub End?
Je suis sûr que c'est simple. Je ne comprends tout simplement pas. Merci pour toute aide.
Exemple:
Public Sub SubA()
On Error Goto ProcError
''# other code
MsgBox FuncA()
ProcExit:
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
Votre étiquette ProcExit est l'endroit où vous libérez toutes les ressources, qu'une erreur se soit produite ou non. Par exemple:
Public Sub SubA()
On Error Goto ProcError
Connection.Open
Open File for Writing
SomePreciousResource.GrabIt
ProcExit:
Connection.Close
Connection = Nothing
Close File
SomePreciousResource.Release
Exit Sub
ProcError:
MsgBox Err.Description
Resume ProcExit
End Sub
En règle générale, si vous avez des connexions à une base de données ou d'autres objets déclarés qui, qu'ils soient utilisés en toute sécurité ou créés avant votre exception, devront être nettoyés (éliminés), le retour de votre code de gestion des erreurs au point d'entrée ProcExit vous permettra de faire votre ramasse-miettes dans les deux cas.
Si vous abandonnez votre procédure en tombant sur Quitter Sub, vous risquez d'avoir une accumulation dégoûtante d'objets instanciés qui ne font que rester dans la mémoire de votre programme.