È consigliabile utilizzare try {} catch() {} nell'istruzione using se si desidera rilevare un'eccezione generata dal codice all'interno del blocco using. Ora, prendi in considerazione i seguenti due esempi: questo spiega perché il blocco try-catch all'interno dell'istruzione using è una buona pratica.
Esempio 1
try{
using(SomeObject so = new SomeObject){
// Perform some tasks
}
}catch(SomeException objSomeException){
// Perform some actions, if exception occurs
}
Esempio 2
using(SomeObject so = new SomeObject){
try{
// Perform some tasks
}catch(SomeException objSomeException){
// Perform some actions, if exception occurs
}
}
Ora, se si verifica un'eccezione durante l'esecuzione di alcune attività all'interno della istruzione using, saranno entrambi ad esempio avere la stesso risultato. La semplice risposta è no, motivo ???
Quando si verifica un'eccezione nell'esempio 1, viene catturata dal blocco catch, senza raggiungere la fine del blocco using. Pertanto, someObject nell'esempio 1 non verrà eliminato correttamente. Anche se CLR è generoso (su cui non dovresti contare) - la memoria utilizzata da someObject nell'esempio 1 non verrà ripristinata (o il massimo finirà nella raccolta GC di Generazione 2).
Nel caso dell'esempio 2, il blocco di cattura si trova all'interno dell'istruzione using. Ciò significa che l'esecuzione raggiungerà la fine del blocco using. Pertanto, il tuo oggetto sarà eliminato e non dovrai preoccuparti della perdita di memoria (deterioramento,
fonte
2012-12-27 06:50:41
Surround con un blocco TryCatch – SimpleVar
con 'try/catch'. – Jon
Potrebbe chiarire la tua domanda? sicuro di cosa stai chiedendo qui. – Tejs