Cosa succede se il blocco "catch" è vuoto - "{}"

2

È corretto usare la sintassi qui sotto per provare a prendere ??

try
{
    int a;
    int b;
    int c=a+b;
}
catch (exception ex)
{
//Nothing here    
}
    
posta Wilman 30.07.2015 - 11:38
fonte

4 risposte

4

Sì e No.

Lasciando il blocco catch completamente vuoto ...

catch( Exception ) 
{
}

... dovrebbe essere un reato d'impiccagione.

Avere un blocco catch vuoto che contiene un commento significativo e dettagliato sul motivo per cui è OK ignorare questa particolare eccezione (e qualsiasi sottoclasse degli stessi) potrebbe essere accettabile, ma solo in circostanze molto limitate.

Rilanciare l'eccezione stessa dovrebbe essere fatta solo quando hai un elenco di blocchi catch e devi "contraffare" un'eccezione più piccola oltre l'attenzione di un gestore di eccezioni "più grande" (per esempio , lanciando un'eccezione FileNotFound al "Mondo esterno" ma facendo qualcosa di diverso con qualsiasi altra IOException).

La parte più importante di Exception Handling è la parte "Handling" e, se non stai facendo nulla utile quando prendi un'eccezione, non dovresti prenderla a tutti . ("Soffocando" un'eccezione utile? YMMV).

    
risposta data 30.07.2015 - 13:09
fonte
5

No, no e no

Non è mai appropriato ignorare eccezioni come questa. Come minimo, dovresti registrare l'eccezione in modo che tu possa capire cosa è andato storto in un secondo momento. La gestione delle eccezioni non è la pesca sportiva, non si prendono eccezioni per il gusto di farlo. Li prendi perché hai intenzione di fare qualcosa con loro.

    
risposta data 30.07.2015 - 11:42
fonte
0

Molto molto raramente. L'unica eccezione che uso su a base regolare sta creando una directory che potrebbe o potrebbe non esistere e quindi rilevo solo l'eccezione specifica che potrebbe essere generata nel caso in cui la directory esista.

    
risposta data 30.07.2015 - 12:25
fonte
0

Ciò mancherebbe semplicemente di far sorgere qualsiasi eccezione. Senza alcuna notifica o registrazione.

Se quell'eccezione appare in fase di esecuzione, sarebbe molto difficile rilevare che si è verificato e risolvere il problema.

Quindi non mangiamo mai l'eccezione fino a quando non è realmente intesa. Anche se è previsto, lo registriamo nei file di registro.

    
risposta data 30.07.2015 - 12:32
fonte

Leggi altre domande sui tag