为什么Visual Studio中告诉我,该代码已抛出用户未处理的异常,即使我捕捉到了异常?
加长版:
我使用实体框架与Microsoft's transient fault handling framework在一起:
我的实体框架类是局部的,我有我自己的方法SaveChangesWithRetries哪里进行重试逻辑:
public partial class EfContext
{
public virtual void SaveChangesWithRetries()
{
var retryPolicy = RetryPolicyFactory.GetDefaultSqlCommandRetryPolicy();
retryPolicy.ExecuteAction(() =>
{
SaveChanges();
});
}
}
我的代码使用这个功能可能如下所示:
try
{
context.SaveChangesWithRetries();
}
catch (OptimisticConcurrencyException)
{
continue;
}
即使我发现了OptimisticConcurrencyException异常,Visual Studio会停止调试器并告诉我对ExecuteAction()的调用会抛出用户未处理的异常。发生这种情况时,调试器停止在EfContext类中。如果我按下F10,调试器会转到catch(OptimisticConcurrencyException)。
我不明白为什么VS2010告诉我有一个用户未处理的异常,即使我有一个catch,即使我的catch捕获异常。
这是什么'继续'在你的'catch'做? – Oded 2012-04-02 13:16:46