2014-09-07 29 views
5

Secondo MSDN, si tratta di una cattiva pratica di intercettare le eccezioni senza un tipo specifico ed utilizzando per esempio System.Net.Exceptioncome sapere le possibili eccezioni quando si usa try catch?

Devo scavare nel manuale di MSDN per vedere i possibili tipi di eccezione ogni volta che vado a prendere un errore. O c'è qualche modo nell'IDE per farmelo vedere velocemente.

Attualmente sto usando Visual Studio 2013 Express Edition

try 
{ 
    using (WebClient goog = new WebClient()) 
    { 
     goog.DownloadString("http://google.com"); 
    } 
} 
catch(Exception E) 
{ 
    saveLog("methodname", E.Message); 
} 

EDIT: In this link, sembra che VS ha già un'opzione per visualizzare exeptions, tuttavia, quando sto selezionare un metodo , mostra solo il tipo e i parametri del metodo. Ma non mostra eccezioni

+3

se si passa il mouse su un metodo, intellisense ti dirà possibili eccezioni – Jonesopolis

+1

Forse sono pigro, o semplicemente non così esperto in VS, ma di solito aspetto che venga lanciata l'espressione, quindi la copio dall'errore e la metto nel mio try catch. – Wobbles

+0

Come posso abilitare intellisense? Quando passo il mouse su un metodo, vedo solo il tipo di metodo, il nome e i parametri che può avere. –

risposta

2

La procedura consigliata è, in genere, aggiungere solo la gestione delle eccezioni che si prevede si verifichino durante il periodo di esecuzione del programma.

Se si tratta di file, ad esempio, la gestione dei tipi *** NotFoundException ha senso. La corretta codifica assicurerà che cose come ArgumentNullException non avvengano, quindi non ha bisogno di essere gestita, ecc.

+0

Questo spiega come gestire le eccezioni, non come sapere quali eccezioni possono essere lanciate. –

0

non c'è costruito in funzione per mostrare questo automaticamente, ma si mette il cursore da qualche parte nel nome del metodo e premere CTRL e Spazio. Le informazioni mostrate qui saranno le stesse del tuo link, quindi dovrebbe mostrare due eccezioni per il metodo DownloadString.

passa il mouse sopra DownloadString non necessariamente vi mostrerà le stesse informazioni cliccando sul nome del metodo e premendo CTRL e Spazio (quest'ultimo che vi mostra le eccezioni che sono gettati dal metodo).

1

A differenza di Java, C# non ha bisogno di elencare le tue potenziali espressioni nella firma dei tuoi metodi. Questo ha dei lati positivi e dei lati negativi. Hai appena incontrato uno dei lati negativi.

Non si può sapere che cosa eccezione potrebbe essere lanciata a meno

  • Il metodo che si sta chiamando è ben documentato con i suoi potenziali eccezioni elencate (caso migliore)
  • si conoscono i particolari casi gravi, eseguirli e vedere quali eccezioni creano (caso pessimo)
  • non avete idea di cosa potrebbe andare male e registrare tutto, modificando il pescato ogni volta che qualcosa accade inaspettato (caso peggiore)