En Python, no es esto útil código de control de excepciones:C#: Equivalente del intento pitón/catch/else bloquear
try:
# Code that could raise an exception
except Exception:
# Exception handling
else:
# Code to execute if the try block DID NOT fail
Creo que es útil ser capaz de separar el código que podía aumento y excepción de su código normal. En Python, esto fue posible como se muestra arriba, sin embargo, no puedo encontrar nada parecido en C#.
Asumiendo que la característica o una similar no existe, ¿es una práctica estándar poner código normal en el bloque try
o después del bloque catch
?
La razón que pido es porque tengo el siguiente código:
if (!IsReadOnly)
{
T newobj;
try
{
newobj = DataPortal.Update<T>(this);
List<string> keys = new List<string>(BasicProperties.Keys);
foreach (string key in keys)
{
BasicProperties[key] = newobj.BasicProperties[key];
}
}
catch (DataPortalException)
{
// TODO: Implement DataPortal.Update<T>() recovery mechanism
}
}
que requiere el código normal estar en el bloque try porque de lo contrario, si se produce una excepción y, posteriormente, manejado, newobj
habría asignado, pero se siente bastante antinatural tener este código en el bloque try que no está relacionado con el DataPortalException
. ¿Qué hacer?
Gracias
Siempre he odiado el uso de bloques intento de captura debido a esto. No hay forma de separar el código de interrupción y no se rompió el código. –
Votación para cerrar como duplicado exacto: http://stackoverflow.com/questions/1177438/c-try-catch-else – ChristopheD
Esto podría ser un duplicado, pero esa pregunta nunca fue respondida lo suficiente. Después de leer las respuestas, me gusta más el concepto de Daniel Newby. –