输入错误用户名密码时触发System.NullReferenceException异常如何解决
空引用异常原因
输入错误用户名密码时,数据库无匹配查询结果,存在两种可能触发异常:
- 数据库返回的
res对象本身为null,调用res.ResultAs方法时触发空引用 res对象存在,但ResultAs<RegLog>()方法在无匹配数据时内部逻辑抛出空引用异常
可行解决方案
- 先增加
res空值校验,再执行类型转换,无结果时直接走账号密码错误的处理逻辑
代码示例:
RegLog reuser = null; if (res != null) { reuser = res.ResultAs<RegLog>(); } // 空值代表无匹配用户,处理错误逻辑 if (reuser == null) { // 此处添加用户名或密码错误的业务处理逻辑 return; }
- 若
res不为空仍报错,说明ResultAs<T>方法内部存在空引用问题,可替换为安全的手动转换逻辑
代码示例:
// ?. 运算符会在res为null时直接返回null,避免抛出异常 var rawResult = res?.RawResult; RegLog reuser = rawResult as RegLog;
- 注意:将变量声明改为
var无法解决该问题,var仅为编译期类型推断语法糖,不会改变运行时的空值逻辑。
内容的提问来源于stack exchange,提问作者all123
相关产品推荐
相关产品推荐

