Сложно дать вам общий ответ на этот вопрос, поскольку существует много разных случаев обработки ошибок, и поэтому существует много разных подходов для решения этой проблемы.Если бы вы опубликовали несколько реальных примеров, вы, вероятно, получили бы здесь много советов о том, как улучшить ваш код.
В общем, добавление обработки ошибок в существующие функции делает их больше, поэтому их рефакторингв меньшие методы всегда хорошая идея.Если вы ищете более общий подход, вы должны освоиться с Аспектно-ориентированным программированием .Это подход, позволяющий полностью исключить код для так называемых сквозных задач (таких как обработка ошибок) из кода вашей бизнес-логики.
РЕДАКТИРОВАТЬ: один простой прием:
Я избегаюписать проверки ошибок, как это:
int MyFunction()
{
if( ErrorCheck1Passes())
{
if( ErrorCheck2Passes())
{
if( ErrorCheck3Passes())
{
callSomeFunction(...);
}
else
return failureCode3;
}
else
return failureCode2;
}
else
return failureCode1;
return 0;
}
Я предпочитаю
int MyFunction()
{
if( !ErrorCheck1Passes())
return failureCode1;
if( !ErrorCheck2Passes())
return failureCode2;
if( !ErrorCheck3Passes())
return failureCode3;
callSomeFunction(...);
return 0;
}