为什么会偶尔抛出空引用错误
本文关键字:引用 错误 偶尔 为什么 | 更新日期: 2023-09-27 18:18:16
好吧,这段代码偶尔抛出一个空引用错误,因为返回((AVMain)this. page)。模型没有返回任何东西。我没有能够使这个错误再次出现,即使使用对其他人失败的相同ID值。任何帮助将非常感激!
protected AVModel Model
{
get
{
return ((AVMain)this.Page).Model;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (SessionData.IsAudit.HasValue && SessionData.IsAudit.Value == true)
{
cbFlagAudit.Visible = false;
}
if (!IsPostBack)
{
cbFlagAudit.Checked = this.Model.FlagForAudit.HasValue ? this.Model.FlagForAudit.Value : false;
}
}
我将首先在整个逻辑中添加一些空引用检查。这应该可以防止NullReferenceException
被抛出。
如何?
protected AVModel Model
{
get
{
if(this.Page is AVMain)
{
var page = this.Page as AVMain;
return page.Model;
}
return null;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (SessionData.IsAudit.HasValue && SessionData.IsAudit.Value == true)
{
cbFlagAudit.Visible = false;
}
if (!IsPostBack)
{
var model = this.Model;
Boolean? value = null;
if(model != null)
{
value = model.FlagForAudit;
}
cbFlagAudit.Checked = (value.HasValue && value.Value)
}
}
谢谢大家的建议,但是这个错误实际上是由于数据库中的权限错误而产生的。它导致存储过程失败,并且没有返回填充对象所需的数据,因此它为空。最初的开发人员并没有在这个项目中加入错误捕获,所以一些本不需要花时间去发现的东西却花了几天时间。永远捕捉你的错误!