假设我有一个网络表单,上面有一些标签,文本框。 webform还有一个gridview来读取xml文件。假设我输入了一个wring文件名:
protected void Page_Load(object sender, EventArgs e)
{
DataSet DS = new DataSet();
DS.ReadXml(Server.MapPath("~/wrongfilename.xml")); // raise an error
GridView1.DataSource = DS;
GridView1.DataBind();
}
这是页面错误处理程序:
protected void Page_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
Server.ClearError();
}
所以我实际上处理了这个错误并清除了这个错误。因此gridview没有数据显示,足够公平。但是当我执行程序时页面仍然是一个空白页面,我想我至少应该得到文本框,标签显示为空的gridview,但它只是一个空白页面。为什么页面没有显示其他组件以及如何显示其他组件?
答案 0 :(得分:1)
如果您试图忽略该错误,那么您在Page_Error中编写的代码是错误的方法。一旦你到达Page_Error,为了挽救发生错误的页面的渲染已经太晚了。 Page_Error应该用于优雅地处理意外的异常,例如记录错误和/或将它们重定向到错误页面。
如果您希望在解析xml出错后继续加载页面,我建议你需要....
protected void Page_Load(object sender, EventArgs e)
{
DataSet DS = new DataSet();
try
{
DS.ReadXml(Server.MapPath("~/wrongfilename.xml")); // raise an error
}
catch(Exception ex)
{
// error handling
}
GridView1.DataSource = DS;
GridView1.DataBind();
}
注意:通常我会捕获您在程序正常运行时可能会遇到的特定异常,但不建议捕获Exception类型的异常。我已经使用了Exception类型,因为您没有指定您正在尝试处理的正在接收的Exceptions。在这里阅读更多内容......
答案 1 :(得分:0)
只需传递/隐藏错误
protected void Page_Load(object sender, System.EventArgs e)
{
try
{
throw new Exception();
}
catch (Exception ex)
{
}
}
public void Page_Error(object sender, EventArgs e)
{
Response.Write("This page is not valid.");
}