Try..Catch fonctionne dans New mais pas dans Load
Bonjour à tous
Dans une feuille MDI, plusieurs forms sont appelées de la manière suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim MaForm As frmForm = Nothing
Try
MaForm = New frmForm
MaForm.MdiParent = Me
MaForm.EcranAppelant = Me.Name
m_ChildFormNumber += 1
MaForm.Show()
Catch Ex As Exception
MessageBox.Show(Ex.Message, "Erreur !", MessageBoxButtons.OK, MessageBoxIcon.Error)
If MaForm IsNot Nothing Then MaForm.Dispose() : MaForm = Nothing
End Try |
Dans chaque form appelée, il y a du code dans le NEW et du code dans le LOAD qui exécute des actions spécifiques en fonction de la form appelante.
Voici la structure du code du NEW :
Code:
1 2 3 4 5 6 7 8
| InitializeComponent()
Partie A = code dont je ne veux pas gérer les erreurs dans le new
....
Try
Partie B = erreurs fonctionnelles que je veux gérer
Catch Ex As Exception
Throw New Exception(Ex.Message)
End Try |
Dans le NEW, toute erreur, même une erreur que je déclenche volontairement pour tester dans la partie A, se retrouve catchée par le bloc Try de la MDI. Fonctionnement normal.
Cela fonctionne donc bien quand une erreur se produit dans le NEW.
Mais quand une erreur se produit dans le LOAD, une exception non gérée se produit.
Citation:
Une exception non gérée du type 'System.Exception' s'est produite
Si je mets un bloc Try, je peux afficher le message mais si je veux propager l'erreur pour qu'elle revienne dans la bloc Try de la MDI, j'ai une erreur
Code:
1 2 3 4 5 6 7 8
| ' Dans le Load :
...
Try
...
Catch Ex As Exception
MessageBox.Show(Ex.Message) ' => j'ai bien le message de l'erreur qui s'affiche dans la MessageBox
Throw New Exception(Ex.Message) ' => plantage avec le message "Une exception non gérée du type 'System.Exception' s'est produite"
End Try |
Je ne comprends pas. Comment cela se fait-il ?
Merci de votre aide.