Gestion d'exception dans un Sub New()...

Résolu
Signaler
Messages postés
4
Date d'inscription
vendredi 16 février 2007
Statut
Membre
Dernière intervention
31 mars 2007
-
Messages postés
4
Date d'inscription
vendredi 16 février 2007
Statut
Membre
Dernière intervention
31 mars 2007
-
Je développe en VB.NET sur SharpDevelop.
Dans une appli je souhaite ouvrir et lire un fichier dans le constructeur Sub New() d'un Formulaire (c'est-à-dire au moment de son initialisation). Pas de problème ça marche, sauf que je souhaite maintenant traiter les exceptions (fichier introuvable et autres). En cas d'exception, je voudrais interrrompre l'initialisation du Formulaire (et ne pas l'afficher).
Je ne connais pas de solution "élégante" pour éviter l'affichage du formulaire, ou interrompre le constructeur. Auriez-vous une idée ?

Merci d'avance.

2 réponses

Messages postés
14847
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2022
160
Bonjour


Gérer les exception en .NET :

Try


Catch


End Try


Pour stopper et annuler un constructeur, je ne connais qu'une seule solution : générer une exception :

Throw ...

Il est plus facile de batiser quelqu'un que de la convertir.(surtout en programmation)
VB (6, A excel, .NET), C++, C#.Net
Mon site
Messages postés
4
Date d'inscription
vendredi 16 février 2007
Statut
Membre
Dernière intervention
31 mars 2007

Merci NHenry,

Je débute en VB.NET (viens de VB6) et je dois dire que j'ai galéré un peu pour utiliser Throw.
En définitive, comme je n'arrivais pas à intercepter l'erreur que je levais par Throw dans la Sub New() du formulaire, j'ai créé une Sub spécifique (toujours dans le formulaire) pour ouvrir et lire le fichier. J'appelle donc cette Sub avant d'afficher mon formulaire par le code suivant :

        Dim Saisie_ As New frmSaisie    
        try
            Saisie_.OpenFile
        Catch ex As Exception
            return
        end try
        Saisie_.Show

Et ça, ça marche. L'exception est correctement levée et interceptée et le formulaire n'est pas affiché en cas d'exception.

Merci encore pour ton aide.