In quali circostanze ha senso perdere la traccia di dove è stata lanciata un'eccezione?

2

C'è una ragione valida per cui un blocco catch su un livello inferiore restituisce un'eccezione causata da un livello sconosciuto più alto utilizzando la seguente sintassi:

throw ex;

... piuttosto che:

throw;

...?

Nel primo caso, non solo il blocco catch non si occupa dell'eccezione, ma resetta anche la sua proprietà StackTrace , rendendo più difficile capire cosa l'abbia causato.

Perché qualcuno dovrebbe volere un blocco catch in un livello inferiore per comportarsi in questo modo?

    
posta Crono 26.11.2014 - 21:23
fonte

1 risposta

1

Prima di tutto, avere un blocco di catch che ripaga solo l'eccezione è solitamente inutile. Ma, l'unico scenario del mondo reale che io possa pensare a quale abbia senso usare throw ex invece di throw è se stai sviluppando una sorta di libreria di terze parti che non vuoi assolutamente che qualcuno nell'outter esterno stia usando il tuo codice per vedere lo stacktrace completo. Non sto dicendo che è una buona cosa, ma potrebbe succedere.

    
risposta data 26.11.2014 - 21:48
fonte