2010-08-06 11 views

Répondre

9

Le débogueur Visual Studio arrête l'exécution lorsque vous obtenez une exception non interceptée (dans ce cas, une exception de division par zéro). En mode débogage, Visual Studio préfère interrompre l'exécution et vous fournir une boîte contextuelle à la source de l'erreur plutôt que de laisser l'application tomber en panne. C'est pour vous aider à trouver des erreurs non interceptées et à les corriger. Cela n'arrivera pas si vous détachez le débogueur. Essayez de l'exécuter en mode édition à partir de la console sans le débogueur attaché et vous verrez votre message.

+0

Déjà essayé que ... Mis à jour la question. –

+0

Ouais sans débogage je peux voir le message. Cela signifie donc que dans le mode de débogage, le dernier ne sera pas exécuté. –

+0

@Nadeem: Non, ça ne veut pas dire ça. Je signifie que votre exception n'est pas gérée et que le débogueur interrompt l'exécution. Si vous gérez l'exception, les choses fonctionneront comme prévu. –

1

F5 continue l'application jusqu'au prochain point de rupture ou exception non gérée.

Je pense que vous devriez utiliser F10 plutôt pour le débogage d'étape ou pour activer la coupure pour toutes les exceptions (traitées ou non).

+0

Ne fonctionne pas pour F10 ou F11 –

+0

Compilez-vous en mode Release? – leppie

+0

essayé à la fois dans la version et le débogage –

0

Ne pas exécuter votre application via F5. En mode de débogage, vous ne pouvez pas ignorer l'exception, la boîte de message apparaîtra encore et encore.

construire lieu et exécuter via CMD, Far Manager, etc

+0

Donc, finalement, cela signifie que dans le mode de débogage finalement ne sera pas exécuté. –

+0

Bien sûr, vous pouvez ignorer les exceptions, par défaut, il ignorera toutes les exceptions gérées. Deuxièmement, vous pouvez déplacer le pointeur d'instruction à la ligne suivante .... – leppie

+0

@Nadeem: Enfin toujours exécuter malgré tout. – leppie

0

Comme la conclusion finale que nous devrions tous d'accord, s'il y a une exception non gérée et l'application est en cours d'exécution en mode débogage, finalement ne sera pas exécuté .

2

Si vous voulez exécuter pendant le débogage, il y a deux choses que vous pouvez faire:

1) Intercepter l'exception correcte:


    int i = 0; 
    try 
    { 
     int j = 10/i; 
    } 
    catch(DivideByZeroException e){} 
    finally 
    { 
     Console.WriteLine("In finally"); 
     Console.ReadLine(); 
    } 
 

2) Faire connaître Visual Studio d'ignorer les exceptions non gérées. Allez à Déboguer -> Exceptions, et puis vous pouvez décocher l'option Exceptions d'exécution du langage commun "User-unhandled", ou vous pouvez développer ce nœud, et décocher les types d'exception individuels.