try...catch...新认识

    说是新认识,就是说之前不知道它是这么用的。

    之前认识try...catch...,就是捕获异常,但这个捕获异常只是:当try的语句错误后,直接到catch的语句,这样界面就不会报错了。所以,仅把它当做了遮挡错误的工具。

    而今天调错的过程中,却是利用try...catch...的捕获异常的功能,找到了错误的所在,并将它解决了。

    当时错误出在:this.DbSession.SaveChanges();

    错误信息是:对一个或多个实体的验证失败 有关详细信息,请参见"EntityValidationErrors"属性。


    这是底层封装好的方法,已经没有人再维护、更改了,并且已经用了很久,所以我没有深究它的错误,我知道错误肯定在别处,但却毫无思绪。有猜测是传参不正确导致的错误,但也不能具体到是哪个参数传错了。

    经过查询资料,得知try...catch可以找到问题的根源,所以进行了尝试:

    在报错的代码处加上try...catch:

                try
                {
                    this.CurrentDal.Add(enCheckScore);//自己的代码
                    this.DbSession.SaveChanges();//自己的代码(源报错的代码)
                }
                catch (DbEntityValidationException dbEx)
                {
                    
                    throw;
                }
    若DbEntityValidationException不能自动提示写出,则添加引用:

        using System.Data.Entity.Validation;
    然后运行,就会得到这样的信息:(以评教代码为例:)

   

    报错的误提示中的EntityValidationErrors也在这个图中。而展开的信息中,就明确告诉了我们问题在哪:有个字段是必须的,也就是我没给它传值,导致了错误。

    知道错误所在,改就是轻而易举的事了......

    从这个过程中,感触最深的就是try...catch的用法,原来还可以这么用......


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值