在我的一个课程中,我调用了一个对它进行了一些错误处理的存储库。我想重构错误处理代码,因为它非常重复,唯一真正改变的是消息。
我的代码目前看起来像这样:
public IList<User> GetUser()
{
try
{
return _repository.GetUsers();
}
catch (WebException ex)
{
ErrorMessages.Add("...");
_logger.ErrorException("...", ex);
}
catch (SoapException ex)
{
ErrorMessages.Add("...");
_logger.ErrorException("...", ex);
}
... etc
}
我可以用调用另一个方法来替换我的 catch 块中的这些行,该方法采用错误消息值和记录器消息值。但是,我想我也可以使用 Action<> 参数来执行此操作,但是我在使用 Func<> 和 Action<> 方面非常缺乏经验,并且真的不知道使用其中一个参数比使用方法有什么好处。
我的问题实际上是重构此代码的最佳方式是什么,以及为什么一种方式比另一种方式受益(根据我上面的示例)。
谢谢你的帮助。