2010-08-06 6 views

risposta

9

Il debugger di Visual Studio interrompe l'esecuzione quando si verifica un'eccezione non rilevata (in questo caso un'eccezione di divisione per zero). In modalità di debug, Visual Studio preferisce interrompere l'esecuzione e fornire una casella popup all'origine dell'errore anziché lasciare che l'applicazione si blocchi. Questo per aiutarti a trovare errori non risolti e correggerli. Questo non succederà se si scollega il debugger.

Provare a eseguirlo in modalità di rilascio dalla console senza il debugger allegato e vedrete il vostro messaggio.

+0

Già provato ... Aggiornamento della domanda. –

+0

Sì, senza debug posso vedere il messaggio. Quindi questo significa in modalità di debug che finalmente non verrà eseguito. –

+0

@Nadeem: No, non significa quello. Voglio dire che la tua eccezione non è gestita e questo fa sì che il debugger interrompa l'esecuzione. Se gestisci l'eccezione, le cose funzioneranno come ti aspetti. –

1

F5 continua l'applicazione fino al successivo punto di interruzione o eccezione non gestita.

Penso che dovresti usare F10 piuttosto per il debugging passo o attivare l'interruzione per tutte le eccezioni (gestite o meno).

+0

Non funziona per F10 o F11 –

+0

Si sta compilando in modalità di rilascio? – leppie

+0

provato sia in versione che in debug –

0

Non eseguire l'applicazione tramite F5. In modalità Debug non è possibile saltare l'eccezione, la finestra di messaggio si aprirà di nuovo e di nuovo.

Invece costruirla e correre via CMD, Far Manager, ecc

+0

Quindi alla fine significa che in modalità debug non verrà eseguito. –

+0

Ovviamente è possibile saltare le eccezioni, per impostazione predefinita salterà tutte le eccezioni gestite. In secondo luogo, puoi spostare il puntatore dell'istruzione sulla riga successiva .... – leppie

+0

@Nadeem: Finalmente verrà eseguito sempre. – leppie

0

Come la conclusione finale che tutti dovrebbero concordare, se v'è un'eccezione non gestita e l'applicazione è in esecuzione in modalità debug, infine, non sarà possibile ottenere eseguito .

2

Se si desidera eseguire durante il debug ci sono due cose che puoi fare:

1) intercettare l'eccezione corretta:


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

2) indicare a Visual Studio di ignorare le eccezioni non gestite. Vai a Debug -> Eccezioni, quindi puoi deselezionare l'opzione "User-unledled" di Common Language Runtime Exceptions, oppure puoi espandere quel nodo e deselezionare i singoli tipi di eccezioni.