我在 try/catch 块中放置了 SaveChanges()
方法,但无法捕获 SqlException 异常。
try
{
db.SaveChanges();
}
catch (Exception ex)
{
}
我在 try/catch 块中放置了 SaveChanges()
方法,但无法捕获 SqlException 异常。
try
{
db.SaveChanges();
}
catch (Exception ex)
{
}
SqlException
是 System.Data.SqlClient.SqlException 类,因此无法捕获此异常。根据 MSDN,EntityFramework的DbContext.SaveChanges Method()
方法只能抛出以下异常:
DbUpdateException
DbUpdateConcurrencyException
DbEntityValidationException
NotSupportedException
ObjectDisposedException
InvalidOperationException
所以你可以像这样做,例如
try
{
db.SaveChanges();
}
catch (DbUpdateException ex)
{
}
catch (DbUpdateConcurrencyException ex)
{
}
更多
上述的异常是Entity Framework定制化异常,只有EF
负责何时和如何触发它们,请参考实现自定义异常
。
DbUpdateConcurrencyException
,然后再捕获 DbUpdateException
。 - Hello无法直接捕获SqlException
异常,因为它不是直接抛出的,而是作为DbUpdateException
的内部异常设置。
Entity Framework是一个抽象层,用于与数据库交互,它不直接依赖于任何数据库技术。
请查看由DbContext.SaveChanges()
引发的异常。