在 Microsoft 企业库的异常处理应用程序块的最新版本(4.1,2008 年 10 月发布)中,有两个 HandleException() 方法签名,我对这些的意图有点迷茫,特别是因为文档和智能感知都没有,QuickStart 应用程序也没有任何有意义的区别。
这是两个签名:
bool HandleException(Exception exceptionToHandle, string policyName);
bool HandleException(Exception exceptionToHandle, string policyName, out Exception exceptionToThrow);
我发现的所有示例都使用第一个,如本示例中直接从 XML 文档中对实际方法的注释中得出的:
try
{
Foo();
}
catch (Exception e)
{
if (ExceptionPolicy.HandleException(e, name)) throw;
}
在这里,来自同一来源(该方法的 XML 文档注释)是使用第二个的示例:
try
{
Foo();
}
catch (Exception e)
{
Exception exceptionToThrow;
if (ExceptionPolicy.HandleException(e, name, out exceptionToThrow))
{
if(exceptionToThrow == null)
throw;
else
throw exceptionToThrow;
}
}
所以,我的问题是,使用第二个给你什么,而第一个没有?这对我来说应该是显而易见的,但我今天的脑袋一团糟,我真的不想再把头撞在众所周知的墙上了。:)
请不要猜测;我希望听到有人从使用它的经验中真正知道他们在说什么。