首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获EF6中的并发异常,将消息更改为更友好的用户

捕获EF6中的并发异常,将消息更改为更友好的用户
EN

Stack Overflow用户
提问于 2015-06-22 08:59:27
回答 1查看 260关注 0票数 0

我使用EF6.1,当抛出以下异常时,我希望将消息更改为更特定于系统的消息。

存储更新、插入或删除语句会影响到意外的行数(0)

现在,我的问题是,我似乎不能抓住例外?我试过以下几种方法,但我的断点似乎永远抓不到

代码语言:javascript
复制
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;
}

抛出的不是一个例外吗??这很奇怪

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 11:44:11

您正在执行一个异步方法。这意味着当您对返回的任务调用await或尝试使用await myTask;检索结果时,将引发任何异常。

您永远不会这样做,这意味着异常将抛出并在调用堆栈的较高位置捕获。

如果要在自己的方法中捕获异常,则应将其语法更改为

代码语言:javascript
复制
public override async System.Threading.Tasks.Task<int> SaveChangesAsync()
{
    try
    {
        return await base.SaveChangesAsync();
    }

不过,在重写SaveChangesAsync时,我会非常谨慎。OptimisticConcurrencyException异常包含导致其StateEntries属性中的乐观冲突的数据。用一条很好的消息来代替它只会使决定如何处理一个特定的错误变得更加困难,例如,决定覆盖或重新加载。

显示一个好消息是最好留给你的控制器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30975843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档