В Python есть такой полезный код обработки исключений:
try:
# Code that could raise an exception
except Exception:
# Exception handling
else:
# Code to execute if the try block DID NOT fail
Я думаю, полезно иметь возможность отделить код, который может вызвать, и исключение от вашего обычного кода.В Python это было возможно, как показано выше, однако я не могу найти ничего подобного в C #.
Предполагая, что эта функция или что-то подобное не существует, это стандартная практика, чтобы поместить нормальный код вtry
блок или после блока catch
?
Причина, по которой я спрашиваю, состоит в том, что у меня есть следующий код:
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
}
}
Для чего требуется, чтобы нормальный код был в блоке tryпотому что в противном случае, если исключение было вызвано и впоследствии обработано, newobj
было бы не назначено, но кажется неестественным иметь столько кода в блоке try, который не связан с DataPortalException
.Что делать?
Спасибо