【发布时间】:2015-07-12 07:31:32
【问题描述】:
在 Visual Studio 2013 中使用异步操作和实体框架支持构建新的 ApiController 时,某些方法将 DbContext.SaveChangesAsync 调用包装在 try-catch 块中。
比如Put方法,
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!EmployeeExists(id))
{
return NotFound();
}
throw;
}
来自 msdn.microsoft.com 关于DbUpdateConcurrencyException,
当预期实体的 SaveChanges 会导致数据库更新但实际上数据库中没有任何行受到影响时,DbContext 抛出异常。
DbUpdateConcurrencyException 派生自 DbUpdateException,DbContext.SaveChangesAsync 方法还可以抛出一些其他异常。
我想知道为什么这些other exceptions 没有catch 子句?是为了简洁吗?或者他们根本不属于应用程序的这个级别?
【问题讨论】:
-
我知道这是旧的,但这是我的一个问题。似乎该方法是使用将自动处理异常的框架异常处理。这意味着您希望异常是......异常的,它们会被自动记录下来,并且响应作为一些默认的 ObjectResult 发送。
标签: c# asp.net entity-framework exception asp.net-web-api