我有一个使用 C# 的 ASP.net 网站。当前框架是4.5
我有一个全局意外错误捕获功能。
它位于 global.asax
这是我如何捕捉
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (Server.GetLastError() != null)
if (Server.GetLastError().GetBaseException() != null)
{
Exception objErr = Server.GetLastError().GetBaseException();
ErrorLogger.LogError(Request.Url.ToString(), objErr.Message.ToString(), objErr.StackTrace.ToString());
if (objErr.Message.IndexOf("does not exist") != -1)
{
Response.RedirectPermanent("Error404.aspx");
}
}
}
现在它可以捕获错误,而且很多时候有大量信息可以用来调试错误。但是有 1 个错误,我无法获得足够的信息。
未将对象引用设置为对象的实例。
它不提供任何关于它是哪个对象的信息。有什么办法可以得到更多的信息吗?
这是一个典型的错误
Object reference not set to an instance of an object.
at gamepage.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
非常感谢您的回答。
最佳答案
NullReferenceException
不携带有关变量的信息,该变量是 null
,不。
It doesn't give any information about which object it is.
就是这样……它不是一个对象。它是对预期对象所在位置的引用,但那里没有对象。 null
字面意思是缺少信息。
处理 NullReferenceException
的方法是精心设计您的代码,以便:
- 它没有发生,或者
- 它以一种潜在的预期方式发生,您检查它并抛出一个自定义信息异常(它仍然可以是一个
NullReferenceException
,只有一条自定义消息)或以某种方式记录/保留信息并有意义地继续执行应用程序。
由于没有完美的代码或开发人员,因此完全可以预料到有人会不时地通过检查和平衡。还行吧。在这种情况下,应该很容易识别哪个对象是 null
。堆栈跟踪应该指向一个特定的方法(甚至可能是特定的代码行,这取决于运行时可用的信息)并且不应该有很多潜在的NullReferenceExceptions
那里。如果有,该方法是草率的,无论如何都应该清理。
发生这种情况时,通过调试和调查确定null
的对象,并更新代码以处理该对象潜在的null
情况。
关于c# - 是否可以捕获对象引用上的哪个对象未设置为对象的实例。错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652304/