Maison >développement back-end >C++ >Pourquoi VS2010 ne montre-t-il pas des messages d'exception non gérés dans les applications WinForms 64 bits?
Lorsque vous utilisez C # et .NET Framework 4 pour créer une nouvelle application Windows Forms dans VS2010, les utilisateurs ont rencontré un comportement inhabituel sur les anomalies non transformées. Après avoir ajouté un code spécifique au programme de traitement FORM1_LOAD, il est prévu que le message inhabituel improtué dans une certaine ligne ne soit pas affiché. Au contraire, l'exécution du code n'a aucune erreur et l'application continue de s'exécuter.
Ce comportement spécial est attribué à la méthode d'interaction avec 64-bits 7 via la couche analogique WOW64. Le problème est que cette couche intercepte l'anomalie du code généré par la notification générée par le gestionnaire de fenêtres 64-bits. En conséquence, le débogueur n'a pas pu identifier et saisir l'exception.
Afin de résoudre ce problème, plusieurs solutions ont été proposées:
Définissez la cible de la plate-forme comme anycpu et annulez le "préfère 32 -BIT" sélectionné
Cette méthode a changé l'application vers le processus 64-bits, éliminant la couche de simulation WOW64 et ses problèmes anormaux connexes. Cependant, il peut affecter la fonction "d'édition et de poursuite", et il peut ne pas être possible de s'appuyer sur le code 32-bits.Autres solutions
Dans "Debug" & gt; "Odoma", le CLR permet de manière anormale la case "Throwing", et le débogueur obligatoire arrête la ligne de code anormale.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
Re -valuate la nécessité du code dans le programme de traitement des événements de charge et envisagez d'utiliser un autre programme de traitement d'événements ou un constructeur pour placer du code approprié. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!