C# 恼人的空引用异常,can';Don’不要一步一步地追踪它

C# 恼人的空引用异常,can';Don’不要一步一步地追踪它,c#,nullreferenceexception,C#,Nullreferenceexception,这里需要帮助,我完全不知所措。我对编程还比较陌生,我正在为一家公司做一个相当大的项目,帮助他们在3.5框架上将早上的报告自动化到VisualStudio中。所以我得到了一个错误: [NullReferenceException: Object reference not set to an instance of an object.] Proficy_Project.clsOptiSet.Read(DateTime ProdDate) in H:\Dev\Wallabee\Webpage

这里需要帮助,我完全不知所措。我对编程还比较陌生,我正在为一家公司做一个相当大的项目,帮助他们在3.5框架上将早上的报告自动化到VisualStudio中。所以我得到了一个错误:

[NullReferenceException: Object reference not set to an instance of an object.]
   Proficy_Project.clsOptiSet.Read(DateTime ProdDate) in H:\Dev\Wallabee\Webpage\FinalProject\FinalProject\clsOptiSet.cs:70
   Proficy_Project.clsMasterClass.Read(DateTime ProdDate) in H:\Dev\Wallabee\Webpage\FinalProject\FinalProject\clsMasterClass.cs:36
   ASP.default_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in c:\Inetpub\wwwroot\Wallaby\Default.aspx:51
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +163
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +51
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例

源错误:

Line 49:         clsMasterClass objMC = new clsMasterClass();
Line 50: 
Line 51:         if (!objMC.Read(new DateTime(2013, 06, 15)))
Line 52:             {
Line 53:             string error = objMC.LastError;
Line 54:             Response.Write(error.ToString());
Line 55:             // error handling
Line 56:             return;
Line 57:             } 
现在,这段代码和整个程序工作得很好。它访问SQL数据库,生成表并插入数据。然后,它在创建的数组中找到点,告诉数据去哪里,并将数据放入图像的该部分。就像我说的,当你编译它时,一切都运行得很好,但是当你发布它时,上面的错误就会发生,这有点超出我的理解,所以我的老板正在处理这部分

非常感谢您的帮助

以下是出现错误时的堆栈信息:

[NullReferenceException: Object reference not set to an instance of an object.]
   Proficy_Project.clsOptiSet.Read(DateTime ProdDate) in H:\Dev\Wallabee\Webpage\FinalProject\FinalProject\clsOptiSet.cs:70
   Proficy_Project.clsMasterClass.Read(DateTime ProdDate) in H:\Dev\Wallabee\Webpage\FinalProject\FinalProject\clsMasterClass.cs:36
   ASP.default_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) in c:\Inetpub\wwwroot\Wallaby\Default.aspx:51
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +256
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +163
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +51
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1266

如果你是编程新手,那么我推荐一些东西。要不获取
NullReferenceException
,应首先检查要使用的可为null的变量是否为null。它们不应为空。例如,在以下代码中:

public string GetFullName(Human human)
{
    return human.FirstName + ' ' + human.LastName;
}
如果
human
为空,您将得到一个
NullReferenceException
。因此,为了获得更好的异常消息,您应该编写:

public string GetFullName(Human human)
{
    if (human == null) 
        throw new ArgumentNullException("Human should not be null");
    return human.FirstName + ' ' + human.LastName;
}
您可能有兴趣阅读以下文章:




为什么对字符串对象执行错误.ToString()?无需再次执行ToString()。但这不是问题所在。看起来您应该遵循堆栈跟踪并逐行遍历调试器。我猜您的clsMasterClass对象在读取的方法中发生了错误。去那里看看……然后发布异常的整个堆栈跟踪。另外,为了详细说明,以防需要更多信息。日期引用一个SQL函数,该函数从公司数据库中提取数据,并将数据插入表中以便于访问。然后,该程序提取该表并将其插入数组中。此程序中的类将该2013、06、15作为2013-06-15或“yyyy-MM-dd”插入SQL查询,然后运行函数将其返回给程序。抱歉,如果这是来回的,已经一个月左右了,我只是这里的实习生。用堆栈信息更新了原始帖子。那么clsOptiSet.cs的第70行是什么样子的?
clsMasterClass
Hmm我想知道这实际上是一个类吗?明白了,我马上试试。但是,是的,在我开始这个项目之前,我只有一些C方面的经验,但没有C方面的经验,我们用了大约3个月的时间完成了这项工作。所以我对它很陌生,特别是因为有一半的时间是SQL,而且似乎你应该给我们看你的
clsOptiSet
文件的第70行。它不允许我添加第70行。但它只是:第70行:adp.Dispose();这就是我终于结束了我的试捕。太棒了,我们找到了答案。adp.dispose必须是if(adp!=null)adp.dispose,以及cnn。一旦发生这种情况,它就不会被一个空的dispose所困扰,并且工作得非常完美。现在,我只需返回并修复sql连接以包含id/密码,我们就可以离开了。谢谢大家。我需要做什么来结束这一切?