Entiendo que el punto de "usar" es garantizar que se invocará el método Dispose del objeto. Pero, ¿cómo debería manejarse una excepción dentro de una declaración de "uso"? Si hay una excepción, necesito ajustar mi declaración de "uso" en una captura de prueba. Por ejemplo:¿Por qué 'usar' no tiene un bloque catch?
permite decir que hay una excepción creada en la creación del objeto dentro del medio del parámetro
try
{
// Exception in using parameter
using (SqlConnection connection = new SqlConnection("LippertTheLeopard"))
{
connection.Open();
}
}
catch (Exception ex)
{
}
o una excepción en el uso de alcance
using (SqlConnection connection = new SqlConnection())
{
try
{
connection.Open();
}
catch (Exception ex)
{
}
}
Parece como si Ya tengo que manejar una excepción con una captura de prueba, que quizás debería manejar la eliminación del objeto también. En este caso, la declaración de "uso" no parece ayudarme en absoluto. ¿Cómo manejo adecuadamente una excepción con la declaración "using"? ¿Hay un mejor enfoque para esto que me falta?
SqlConnection connection2 = null;
try
{
connection2 = new SqlConnection("z");
connection2.Open();
}
catch (Exception ex)
{
}
finally
{
IDisposable disp = connection2 as IDisposable;
if (disp != null)
{
disp.Dispose();
}
}
Podría el "uso de" palabras clave de sintaxis ser un poco más dulce ...
Seguro que sería bueno tener esto:
using (SqlConnection connection = new SqlConnection())
{
connection.Open();
}
catch(Exception ex)
{
// What went wrong? Well at least connection is Disposed
}
+1 Este es un gran punto. La excepción probablemente deba manejarse en el siguiente nivel. – SwDevMan81