抛出异常并记录它的方法

Vac*_*ano 2 .net c#

我的代码中有很多这样的东西:

if (labelType == null)
{
    var errorMessage = "Invalid Label Type Id Look up: " + labelTypeId;
    log.Error(errorMessage);
    throw new ApplicationException(errorMessage);
}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

FailureActions.Fail("Invalid Label Type Id Look up: " + labelTypeId);
Run Code Online (Sandbox Code Playgroud)

并且该Fail方法将封装上述逻辑.

但那些混乱将会流动控制逻辑.编译器不再意识到我正在抛出异常.

还有另一种方法来压缩这段代码吗?(适用于编译器的流程分析)

SLa*_*aks 8

使您的记录器方法返回异常.

然后你可以写

throw FailureActions.Fail("Invalid Label Type Id Look up: " + labelTypeId);
Run Code Online (Sandbox Code Playgroud)

请注意,如果您忘记throw在callsite 上添加(特别是如果您的方法返回void),则会以静默方式丢弃您的异常.
为了帮助您,您可以使您的方法也是throw例外(但仍然返回它以便调用点可以写throw).