У меня есть фрагмент кода, который выглядит следующим образом:
try
{
classVar = functionCall(input, sEnum.First);
classVar = functionCall(input, sEnum.Second);
classVar = functionCall(input, sEnum.Third);
}
catch (Exception ex)
{
Debug.Assert(false, ex.ToString());
}
Однако мое исключение не показывает, из какого именно звонка он пришел. Трассировка стека также показывает только детали из другого класса, вызываемого внутри вызова функции.
Альтернативный способ обернуть это:
try
{
classVar = functionCall(input, sEnum.First);
}
catch (Exception ex)
{
Debug.Assert(false, ex.ToString());
}
try
{
classVar = functionCall(input, sEnum.Second);
}
catch (Exception ex)
{
Debug.Assert(false, ex.ToString());
}
try
{
classVar = functionCall(input, sEnum.Thrid);
}
catch (Exception ex)
{
Debug.Assert(false, ex.ToString());
}
Хотя я думаю, что он гораздо менее читабелен, чем предыдущая версия.
Существует ли шаблон для переноса вызовов функций или передачи исключений таким образом, чтобы я мог позже увидеть, откуда они пришли, сохраняя код читабельным?