2017-01-13 9 views
0

私はウェブフォームを持っていて、そこにいくつかのラベル、テキストボックスがあるとします。 webformにはXMLファイルを読むためのgridviewもあります。のは、私が絞るのファイル名を入力しましょう:asp.netでPage_Errorをキャッチするときにページ表示を続ける方法

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で表示されますが、それは単なる空白のページです。ページに他のコンポーネントが表示されない理由と他のコンポーネントを表示する方法

答えて

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型の例外をキャッチすることはお勧めできません。私はあなたが処理しようとしている例外を指定していないので、例外タイプを使用しました。もっと読む...

Why not catch general Exceptions

関連する問題