try...catch...新认识

来源:互联网 发布:多肉植物淘宝店推荐 编辑:程序博客网 时间:2024/06/08 05:49

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

    之前认识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
原创粉丝点击