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

1
2
3
4
5
6
7
8
9
10
11
12
try
{
    Do();
}
catch (Exception ex)
{
    Log(ex);
}
finally
{
    DoOther();
}

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

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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void CallMethod<T>(Func<T, int> func, T item)
{
    try
    {
        func(item);
    }
    catch (Exception e)
    {
        Log(e);
    }
    finally
    {
        DoOther();
    }
}

 

 调用方法:

 

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

 

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