2010-10-04 5 views
2

J'ai un formulaire qui est utilisé au moment de la conception pour configurer diverses propriétés.
J'ai essayé deux manières de faire une exception de capture au niveau de toutes les exceptions:Exception de temps de conception non interceptée dans Winforms .Net

(1) J'ajoute un gestionnaire à Application.ThreadException dans le constructeur.
(2) J'enveloppe la méthode Show, de la forme, dans un try/catch bloc

Ces deux travaux à exécution lorsque je test en ajoutant une grille de propriété à un formulaire et définissez mon composant comme SelectedObject.

Cependant, au moment de la conception, la forme se ferme simplement sans aucun message; ni mon message ni aucun message expliquant qu'il existe une exception non gérée.

Des idées? ETA: Il ne s'agit pas de déboguer au moment du design. Il s'agit de présenter un message convivial à l'utilisateur lorsque mon éditeur de type rencontre une exception non gérée.

Répondre

0

Vous ne disposez pas d'un objet Application techniquement au moment de la conception, et il n'appelle pas la méthode Show() de la même manière que vous. La meilleure façon d'attraper l'exception est d'entourer la méthode ou la propriété incriminée que le concepteur rencontre un problème de chargement avec un try/catch et de lancer l'exception.

Juste pour un test, aller de l'avant et ajouter une propriété factice à votre formulaire, appelé IamGoingToThrowAnException, et dans le getter de la propriété faire throw new System.Exception("Caught me in design mode"), comme suit:

public string IamGoingToThrowAnException 
{ 
    get 
    { 
     throw new System.Exception("Caught me in design mode."); 
    } 
} 

La même chose fonctionne pour tout méthodes ou propriétés initialisées via la méthode InitializeComponents ou le constructeur de votre formulaire.

Questions connexes