J'utilise une DLL COM fournie par une société de logiciels tierce (je n'ai pas le code source). Je sais avec certitude qu'ils ont utilisé Java pour l'implémenter parce que leurs objets contiennent des noms de propriété comme 'JvmVersion'. Après avoir instancié un objet introduit par la DLL COM fournie, toutes les exceptions dans mon programme C# ne peuvent pas être interceptées par le débogueur VS et chaque fois qu'une exception se produit, j'obtiens le dialogue de débogueur Windows par défaut (Et c'est pendant l'exécution de mon programme en mode débogage sous un environnement de débogage VisualStudio complet).Après avoir appelé un composant COM-dll, les exceptions C# ne sont pas interceptées par le débogueur
À titre d'illustration:
throw new Exception("exception 1");
m_moo = new moo(); // Component taken from the COM-dll
throw new Exception("exception 2");
Exception 1 sera pris par VS et montrent la "fenêtre d'exception jaune". Exception 2 ouvre une boîte de dialogue intitulée "Débogueur Just-In-Time Visual Studio" contenant le texte "Une exception win32 non gérée s'est produite dans myfile.vshost.exe [1348]." suivi d'une liste des instances VS existantes sur mon système à sélectionner.
Je suppose que l'instanciation de l'objet "moo" remplace le gestionnaire d'exceptions de C# ou quelque chose comme ça. Ai-je raison et existe-t-il un moyen de préserver le gestionnaire d'exceptions de C#?
essayez toujours fonctionne. Debugger.Break() fonctionne très bien - a suspendu l'exécution et a coloré la ligne exécutée en cours. NullReferenceException est fubar comme les autres exceptions. –
Cela semble correct. Testez que NRE peut être capturé avec try/catch. –