2009-05-21 12 views
5

Desidero che il designer rilevi l'errore quando eseguo il debug e voglio che l'utente visualizzi il mio messaggio amichevole se si verifica un errore. So che posso compire questo con il seguente:Esiste un modo migliore per ignorare try/catch in modalità debug nello studio di visualizzazione

#If Debug=False Then 

Try 

#End If 

'some code here 

#If Debug=False Then 

Catch ex as exception 

    Messagebox.Show("Errors suck") 

End Try 

#End If 

Non voglio dover scrivere tutte le #statements e averli ingombrano il mio codice. Sembra che questo dovrebbe essere un bisogno comune e ci deve essere un modo migliore. Qualcuno sa un modo migliore?

+0

Hai mai risolto questo problema correttamente? Hai ancora bisogno di aiuto con questo? – jcolebrand

risposta

0

Nella sezione catch del tuo Try..Catch dovresti scrivere il messaggio di eccezione, lo stacktrace e qualsiasi altra cosa tu possa desiderare in un file di registro - in aggiunta puoi anche scrivere quei dati nel registro eventi di Windows.

Nella peggiore delle ipotesi, potresti inserire solo punti di interruzione nella sezione Catch dei tuoi blocchi Try..Catch, poiché normalmente non dovresti colpirli, non dovrebbe essere un grosso problema una volta impostato.

15

In VS.NET è possibile indicare se si desidera interrompere il debugger quando un'eccezione è generata (non solo quando non gestita).

Guarda il debug | Eccezioni ... voce di menu (Ctl-Alt-E sulle scorciatoie da tastiera). Scegli l'eccitazione a cui sei interessato, quindi seleziona la casella "generata" per quell'eccezione.

È possibile selezionare quella scatola a diversi livelli (tutte le eccezioni CLR, tutte le eccezioni CLR in un determinato spazio dei nomi, o eccezioni molto specifiche)

3

Non v'è alcun buon modo per farlo ignorare un tentativo di cattura di diverso da quello hai finito. Ma puoi rendere il codice un po 'più pulito e ottenere essenzialmente lo stesso effetto. Stai essenzialmente cercando di impedire l'esecuzione dell'azione nel blocco catch. Un modo migliore per farlo è un metodo compilato in modo condizionale.

Try 
... 
Catch ex As Exception 
    DebugLog(ex) 
    Throw 
End Try 

<Condition("DEBUG)> _ 
Public Sub DebugLog(ByVal ex As Exception) 
    Messagebox.Show("errors suck") 
End Sub 
0

Ho notato che non hai mai contrassegnato nulla come accettato qui. Hai sentito parlare di Aspect Oriented Programming? Questo è in realtà simile a qualcosa che sto cercando di implementare in un nuovo progetto, quindi ero curioso di sapere se avessi fatto qualcos'altro con questo. Inoltre, essendo una domanda vecchia di un anno ... potresti aver fatto qualcosa e non essere riuscito a seguirlo.

E poi albeggia su di me che sembra che il richiedente ha chiuso il suo conto ...

0

Ecco come lo faccio:

Attivo:

Try ' : Catch: End Try 
    doSomething 
    andSomeMore 
    etcEtc 
' Try 
Catch ex As Exception 
    handleException 
End Try 

disattivare la sopra eliminando i due caratteri del commento:

Try : Catch : End Try 
    doSomething 
    andSomeMore 
    etcEtc 
Try 
Catch ex As Exception 
    handleException 
End Try 
Problemi correlati