2017-01-13 2 views
0

Angenommen, ich habe ein Webformular und es sind einige Beschriftungen und Textfelder darauf. Das Webformular hat auch eine Gridview zum Lesen der XML-Datei. Lassen Sie uns sagen, dass ich einen wring Dateinamen eingeben:Wie wird die Seitenanzeige beim Abfangen fortgesetzt? Page_Error in asp.net

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(); 
} 

und dies ist die Seite Fehlerbehandlung:

protected void Page_Error(object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError(); 
    Server.ClearError(); 
} 

so tatsächlich behandelt ich diesen Fehler und diesen Fehler beheben. Gridview hat also keine Daten, die angezeigt werden können. Aber die Seite ist immer noch eine leere Seite, wenn ich das Programm ausführe, ich denke, ich sollte mindestens Textfeld, Etiketten mit einem leeren Gridview angezeigt werden, aber es ist nur eine leere Seite. Warum zeigt die Seite keine anderen Komponenten und wie werden andere Komponenten angezeigt?

Antwort

1

Wenn Sie versuchen, den Fehler zu ignorieren, ist der Code, den Sie in Page_Error geschrieben haben, der falsche Weg. Sobald Sie Page_Error erreicht haben, ist es zu spät, das Rendern der Seite, auf der der Fehler aufgetreten ist, zu retten. Page_Error soll verwendet werden, um unerwartete Ausnahmen z. protokollieren Sie den Fehler und/oder leiten Sie ihn auf eine Fehlerseite um.

Wenn Sie möchten, dass Ihre Seite Laden nach einem Fehler fortsetzen Ihre XML-Parsing Ich würde vorschlagen, Sie brauchen ....

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(); 
} 

HINWEIS: Normalerweise würde ich die spezifischen Ausnahmen fangen Sie in den normalen Betrieb erwarten des Programms ist das Abfangen von Ausnahmen vom Typ Exception nicht ratsam. Ich habe den Ausnahmetyp verwendet, da Sie nicht angegeben haben, welche Ausnahmen Sie erhalten, mit denen Sie umgehen möchten. Lesen Sie mehr hier ...

Why not catch general Exceptions

Verwandte Themen