最近在项目开发过程中,发现有很多这样的类似代码:

try
{
	Do();
}
catch (Exception ex)
{
	Log(ex);
}
finally
{
	DoOther();
}

  都是Ctrl + C, Ctrl + V 。做起来真的太麻烦。

  后来发现了 C# 不太常用的 Func 委托。通过如下的改造 代码简洁了很多。

 

        private void CallMethod<T>(Func<T, int> func, T item) 
        {
            try
            {
                func(item);
            }
            catch (Exception e)
            {
                Log(e);
            }
            finally
            {
                DoOther();
            }
        }

 

 调用方法:

 

CallMethod(new Func<string, int>(MethodTest), "Hello");
private void MethodTest()
{
    Do();
}

 

这样做 避免了重复的 try...catch...finally