NullReferenceException 的可恨之处

通常我们在取数据库记录或者字段时,获取不存在的值时,会出现

NullReferenceException

如果根据某个键值去LoadById, 我们通常会检查一下这个键值是否在数据库里存在。

但如果Id键值存在时,还是null reference,例如这样时,

_context.Projecs.Where(x => x.AchId.Equals(id)).FirstOrDefault();

就要检查哪些字段是必填的,但数据库的值是null的。NullReferenceException 的可恨之处在于没有发生错误的字段名的信息。

当出错时,而这个表的字段很多时,你就得一个个去对比model和db的区别。

异常应该要提供足够我们诊断错误的信息,让我们在开发中迅速定位错误。

转载于:https://www.cnblogs.com/zitjubiz/p/10468354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "NullReferenceException" 是一种常见的编程错误,通常表示程序尝试访问一个 "null" 对象的属性或方法。这意味着该对象没有被正确初始化或赋值。解决方法是检查程序代码,确保该对象已被正确初始化或赋值。 ### 回答2: NullReferenceException是一种常见的C#编程错误,指的是试图访问未初始化或空引用对象的成员时发生的异常。这通常是由以下几种情况引起的: 1. 未初始化或空引用对象:当你创建一个对象的实例或声明一个变量,但未初始化它时,该变量被默认设置为null。如果你尝试访问此null引用的任何成员,就会引发NullReferenceException异常。 2. 访问不存在的对象:如果你尝试访问一个不存在的对象,就会引发NullReferenceException异常。这种情况可能源于代码中不存在的对象、从未初始化的对象或有条件地创建对象的情况。 3. 对象被销毁:当你访问一个已经被销毁的对象或引用一个超出其作用域的对象时,也会引发NullReferenceException异常。 为了避免NullReferenceException异常,程序员可以采取以下措施: 1. 始终检查引用是否为空:在使用引用之前,程序员应该检查引用是否为空,以防止引用空对象引发NullReferenceException异常。 2. 使用条件操作符:使用条件操作符可以避免访问空引用的成员,从而保证代码的安全性。 3. 使用异常处理程序:使用异常处理程序可以有效地处理NullReferenceException异常,并提供有用的错误信息。 总结来说,NullReferenceException是一种常见的编程错误,它通常是由未初始化的引用、访问空引用的成员或超出其作用域的引用引起的。避免它的方法是始终检查引用是否为空、使用条件操作符和使用异常处理程序。只要程序员遵循这些简单的指导原则,就可以避免NullReferenceException带来的不便和困惑。 ### 回答3: NullReferenceException是.NET编程中常见的错误类型之一。该异常通常在程序试图访问空对象时触发,也就是说,程序试图访问一个没有被实例化或者已经被销毁的对象,由此导致的运行时错误。在编写代码时,我们应该注意任何可能引起空指针异常的地方,例如,在调用函数之前检查参数是否为null,或者使用条件语句来避免访问空对象。 造成NullReferenceException异常的常见原因有: 1.未初始化对象:如果尝试操作未初始化的对象,就会引发NullReferenceException异常。例如,在尝试访问字符串的成员时,字符串对象必须被初始化。 2.对象被销毁:强制转换或隐式转换变量时,如果对象已被销毁,则会引发NullReferenceException异常。 3.数组下标越界:当访问一个不存在的数组元素时会引发NullReferenceException异常。 4.方法返回null:如果调用方法返回null,那么使用这个返回值的其他代码就会引发NullReferenceException异常。 在遇到NullReferenceException异常时,可以通过以下方式进行调试和解决: 1.检查代码中所有的变量和成员是否都已经被正确地初始化。 2.使用断点调试程序,逐步排查哪行代码引发了NullReferenceException异常。 3.使用代码静态分析工具来检查可能存在的NullReferenceException异常。 4.使用try-catch代码块捕获异常并进行处理,协同完成程序的异常处理和逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值