Capisco che il punto di "utilizzo" è garantire che venga chiamato il metodo Dispose dell'oggetto. Ma come dovrebbe essere gestita un'eccezione all'interno di una frase "using"? Se c'è un'eccezione, ho bisogno di racchiudere la mia frase "using" in un try catch. Per esempio:Perché l'opzione 'using' non ha un blocco catch?
Lets dire che c'è un'eccezione creata nella creazione dell'oggetto all'interno del usando il parametro
try
{
// Exception in using parameter
using (SqlConnection connection = new SqlConnection("LippertTheLeopard"))
{
connection.Open();
}
}
catch (Exception ex)
{
}
O un'eccezione all'interno del usando ambito
using (SqlConnection connection = new SqlConnection())
{
try
{
connection.Open();
}
catch (Exception ex)
{
}
}
Sembra come se Ho già bisogno di gestire un'eccezione con un try catch, che forse dovrei semplicemente gestire lo smaltimento dell'oggetto. In questo caso l'affermazione "using" non sembra affatto aiutarmi. Come gestisco correttamente un'eccezione con l'istruzione "using"? C'è un approccio migliore a questo che mi manca?
SqlConnection connection2 = null;
try
{
connection2 = new SqlConnection("z");
connection2.Open();
}
catch (Exception ex)
{
}
finally
{
IDisposable disp = connection2 as IDisposable;
if (disp != null)
{
disp.Dispose();
}
}
Può la "usando" la sintassi parola chiave un po 'più zuccherino ...
Di certo sarebbe bello avere questo:
using (SqlConnection connection = new SqlConnection())
{
connection.Open();
}
catch(Exception ex)
{
// What went wrong? Well at least connection is Disposed
}
+1 Questo è un grande punto. L'eccezione probabilmente dovrebbe essere gestita al livello successivo. – SwDevMan81