【发布时间】:2012-04-02 12:48:43
【问题描述】:
短版:
为什么 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 告诉我有一个用户未处理的异常,即使我有一个捕获并且即使我的捕获捕获了异常。
【问题讨论】:
-
continue在你的catch中做什么?
标签: visual-studio-2010 exception-handling unhandled-exception