У меня есть метод, как:Вход пойманы исключения из вне метода, в котором они были пойманы
public TResult DoSomethingWithLogging<TResult>(Func<TResult> someAction)
{
try
{
return someAction.Invoke();
}
catch (Exception ex)
{
LogException(ex)
throw;
}
Этот метод используется следующим образом:
var result = DoSomethingWithLogging(() => Foo());
Я также хочу, чтобы войти исключения, которые были пойман внутри Foo()
. Я не могу использовать throw
в catch
внутри Foo
.
Как я могу поймать такие исключения?
Пример:
public static string Foo()
{
try
{
return "Foo";
}
catch (Exception)
{
// I have to log this exception too without adding anything to Foo
return "Exception caught";
}
}
Можете ли вы объяснить, почему у вас есть эти требования? Они кажутся очень конкретными и эффективно калечат, как вы можете написать хороший код. Возможно, мы сможем найти лучшее решение, которое удовлетворяет фактическим требованиям без необходимости искажать код для его размещения? – Rob
Это в приложении MVC. Он используется в контроллере как ведение импорта данных из файла csv.В случае неудачного импорта я должен хранить информацию о проблеме. Но теперь, когда возникает определенная проблема, я могу просто пропустить эту строку в файле. Но мне все же приходится регистрировать, почему некоторые строки пропущены. –
Я все еще думаю, что вы идете по нему не так. Вы можете, например, выставить событие внутри foo, которое позволяет вам отреагировать на исключенные исключения. Однако со стороны, предполагая что-либо изнутри foo, плохой дизайн. – Batavia