Il MSDN recommends mette un'istanza delle classi che implementano IDisposable
in un blocco using
. In alternativa, se viene istanziato all'interno di un blocco try-catch
, quindi Dispose
in Finally
.Ci sono problemi con l'utilizzo del blocco per un IDisposable all'interno di un blocco catch catch?
Ci sono problemi nell'utilizzo di un blocco using
all'interno di un blocco try-catch
in questo modo?
try
{
using (Foo bar = new Foo())
{
bar.doStuff();
}
}
catch (Exception e)
{
//vomit e
}
Naturalmente posso solo chiamare Dispose
in un blocco Finally
, ma io sono un novizio di programmazione e io sono solo curioso di sapere se fare qualcosa di simile è praticamente accettabile o se qualcuno mi schiaffo up il retro della mia testa e urla contro di me che sono Doing-It-Wrong™
.
O meglio, sono più interessato a sapere perché questo sarebbe sbagliato se lo fosse.
No, questo va bene. Perché dovrebbe essere sbagliato? Anche se in questo caso userò il try-catch-finally, visto che c'è già un blocco 'try' (nel caso generale questo potrebbe davvero importare se è necessario usare' bar' nel 'catch', ma non si nel tuo esempio). – Cameron
L'istruzione using eliminerà l'oggetto e il catch try gestirà eventuali errori. Come stai facendo sopra è assolutamente soddisfacente –
Questa è una buona idea perché promuove la coerenza per quanto riguarda lo smaltimento. Usa sempre se puoi. Regola semplice, quasi sempre una buona linea guida. – usr