我使用EF6.1,当抛出以下异常时,我希望将消息更改为更特定于系统的消息。
存储更新、插入或删除语句会影响到意外的行数(0)
现在,我的问题是,我似乎不能抓住例外?我试过以下几种方法,但我的断点似乎永远抓不到
public override System.Threading.Tasks.Task<int> SaveChangesAsync()
{
try
{
return base.SaveChangesAsync();
}
catch (System.Data.Entity.Core.OptimisticConcurrencyException e)
{
var a = e.Message;
}
catch (System.Data.DBConcurrencyException e)
{
var a = e.Message;
}
catch (Exception e)
{
var a = e.Message;
}
return null;
}抛出的不是一个例外吗??这很奇怪
发布于 2015-06-22 11:44:11
您正在执行一个异步方法。这意味着当您对返回的任务调用await或尝试使用await myTask;检索结果时,将引发任何异常。
您永远不会这样做,这意味着异常将抛出并在调用堆栈的较高位置捕获。
如果要在自己的方法中捕获异常,则应将其语法更改为
public override async System.Threading.Tasks.Task<int> SaveChangesAsync()
{
try
{
return await base.SaveChangesAsync();
}不过,在重写SaveChangesAsync时,我会非常谨慎。OptimisticConcurrencyException异常包含导致其StateEntries属性中的乐观冲突的数据。用一条很好的消息来代替它只会使决定如何处理一个特定的错误变得更加困难,例如,决定覆盖或重新加载。
显示一个好消息是最好留给你的控制器。
https://stackoverflow.com/questions/30975843
复制相似问题