Domanda

Sto eseguendo il debug di un'applicazione di produzione che presenta un'ondata di blocchi catch vuoti sospiro:

try {*SOME CODE*}
catch{}

C'è un modo per vedere qual è l'eccezione quando il debugger colpisce il problema nell'IDE?

È stato utile?

Soluzione

In VS, se guardi nell'area Locali del tuo IDE mentre sei all'interno del blocco catch, avrai qualcosa con l'effetto di $EXCEPTION che avrà tutte le informazioni per l'eccezione appena catturata.

Altri suggerimenti

In Visual Studio - Debug -> Eccezioni -> Seleziona la casella "Eccezioni Common Language Runtime" nella colonna generata

Tu puoi scrivere

catch (Exception ex) { }

Quindi, quando viene generata e catturata un'eccezione qui, puoi ispezionare ex.

No, è impossibile, perché quel blocco di codice dice "Non mi interessa l'eccezione".Potresti eseguire una ricerca e sostituzione globale con il codice seguente per visualizzare l'eccezione.

catch {}

con quanto segue

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

Ciò che farà è mantenere il tuo attuale "non fare nulla" per il codice di produzione, ma quando viene eseguito in DEBUG ti consentirà di impostare punti di interruzione sull'oggetto o.

Se usi Visual Studio, è possibile interrompere ogni volta che viene generata un'eccezione, indipendentemente dal fatto che non sia gestita o meno.Quando viene lanciata l'eccezione, l'helper dell'eccezione (forse solo VS 2005 e versioni successive) ti dirà di che tipo di eccezione si tratta.

Colpo Ctrl+Alt+E per visualizzare la finestra di dialogo delle opzioni delle eccezioni e attivarla.

Non puoi semplicemente aggiungere un'eccezione a quel punto e ispezionarla?

@sectrean

Questo non funziona perché il compilatore ignora il valore Exception ex se non c'è nulla che lo utilizzi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top