2008-09-02 17 views
8

Je suis débogage d'une application de production qui a une éruption de blocs catch vides soupir:Débogage une exception dans un bloc catch vide

try {*SOME CODE*} 
catch{} 

Est-il possible de voir ce que l'exception est lorsque le débogueur frappe la capture dans l'IDE?

+0

Désolé aurait dû être plus clair - Je ne peux pas modifier le code - J'essaie juste de traquer quelques bugs – Rikalous

Répondre

1

Si vous utilisez Visual Studio, vous pouvez rompre chaque fois qu'une exception est levée, qu'elle soit non gérée ou non. Lorsque l'exception est levée, l'assistant d'exception (peut-être seulement VS 2005 et versions ultérieures) vous dira de quel type d'exception il s'agit.

Hit Ctrl +Alt +E pour faire apparaître les options d'exception dialogue et activer ce.

+0

C'est le mécanisme que j'ai fini par utiliser - Je ne pouvais pas trouver un moyen de voir l'excecption cachée comme AdamB décrit – Rikalous

+0

Bien que prudent ce que vous souhaitez. Si vous faites cela avec une application MVC, vous serez étonné de voir combien d'exceptions sont capturées à chaque requête. – Casey

0

Vous ne pouvez pas simplement ajouter une exception à ce moment-là et l'inspecter?

3

Dans Visual Studio - Mise au point -> Exceptions -> Cochez la case par « Exceptions Common Language Runtime » dans la colonne

6

Renvoyé dans VS, si vous regardez dans la zone des sections locales de votre IDE tout à l'intérieur du bloc catch , vous aurez quelque chose à l'effet de $ EXCEPTION qui aura toutes les informations pour l'exception qui vient d'être interceptée.

+0

Je ne pouvais pas voir ça nulle part – Rikalous

+0

Où avez-vous vu cela? Étendre l'information –

1

Vous pouvez écrire

catch (Exception ex) { } 

Puis, quand une exception est levée et pris ici, vous pouvez inspecter ex.

1

Non, c'est impossible, parce que ce bloc de code dit "je me fiche de l'exception". Vous pouvez faire une recherche globale et remplacer par le code suivant pour voir l'exception.

catch {} 

avec le

suivant
catch (Exception exc) { 
#IF DEBUG 
    object o = exc; 
#ENDIF 
} 

Ce que cela va faire est de garder votre position actuelle ne se coincent rien pour le code de production, mais lors de l'exécution en DEBUG il vous permettra de définir des points d'arrêt sur l'objet o.

0

@sectrean

Cela ne fonctionne pas parce que le compilateur ne tient pas compte de la valeur ex Exception s'il n'y a rien à l'utiliser.