使用Lambda表达式尝试没有抓到一个坏的做法?

San*_*eep 1 .net c# lambda

我在代码中有很多部分

try
{
    // not so important code, but don't want this to affect anything else
}

catch
{
}
Run Code Online (Sandbox Code Playgroud)

使用这被认为是一种不好的做法?

Try(() => 
{
});

void Try(Action a)
{
    try
    {
        a();
    }
    catch
    {
        // ignore.
    }
}
Run Code Online (Sandbox Code Playgroud)

Kei*_*ith 5

当然,你总是可以添加一个异常处理程序:

void Try(Action a, Action<Exception> onErr)
{
    try
    {
        a();
    }
    catch (Exception e)
    {
        onErr(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

那你就得:

Try( 
    ()=> { /* do something */ }
    e => { } );
Run Code Online (Sandbox Code Playgroud)

你可以有一个标准的空手道

static void IgnoreError(Exception e) 
{
    #if DEBUG
    throw e;
    #end if
}

Try( 
    ()=> { /* do something */ }
    IgnoreError );
Run Code Online (Sandbox Code Playgroud)

我认为这不是很糟糕,但它非常不标准 - 你的代码会让人感到困惑,我认为它不会增加任何东西.考虑这一点很有意思,但我认为你的代码最终会让人感到困惑.

此外,虽然在某些情况下您可能希望忽略异常,但实际上并不希望这样做更容易.