我的代码中有很多这样的东西:
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方法将封装上述逻辑.
但那些混乱将会流动控制逻辑.编译器不再意识到我正在抛出异常.
还有另一种方法来压缩这段代码吗?(适用于编译器的流程分析)
使您的记录器方法返回异常.
然后你可以写
throw FailureActions.Fail("Invalid Label Type Id Look up: " + labelTypeId);
Run Code Online (Sandbox Code Playgroud)
请注意,如果您忘记throw在callsite 上添加(特别是如果您的方法返回void),则会以静默方式丢弃您的异常.
为了帮助您,您可以使您的方法也是throw例外(但仍然返回它以便调用点可以写throw).