-5

最終的に一部が上書きされず、lbl.Process のテキストに「これは通常のテキストです」と表示されるように、以下のコードを修正するにはどうすればよいですか?

try
{
    grd_Order.SaveClicked(sender, e);
   //This is a button's Clicked event, which redirects to the same page after saving. 
}
catch
{
}
finally
{
   lbl_Process.Text = "This is a regular text"
   //Some more process
}

編集:コードを単純化して質問をより理解しやすくするたびに、同じことに直面します。多くの多くの誤解。

4

6 に答える 6

3

最終ブロックが機能しています。問題は、同じページにリダイレクトしているため、lbl_Errorポストバックでテキストが失われていることです。

于 2012-10-05T06:50:45.730 に答える
2

finally ブロックにブレークポイントを設定すると、常に実行されることがわかります。

于 2012-10-05T06:51:21.417 に答える
1

あなたが投稿したコードに finally ブロックの目的はありません。最後に、クリーンアップに使用されます。エラーの場合は、コードを catch ブロックに移動します。

これを行う:

try
{
    grd_Order.SaveClicked(sender, e);
   //This is a button's Clicked event, which redirects to the same page after saving. 
}
catch (Exception ex)
{
    lbl_Error.Text = "Error Occured " + ex.Message;
}

ページがリダイレクトされる場合は、エラーが発生していないことを意味します。

于 2012-10-05T06:50:55.600 に答える
0

最終的にコードブロックが正常に機能していると思います。ビュー ステートが有効になっていないため、lbl テキストが失われている可能性があります。

エラー メッセージを finally ブロックに記述しないことをお勧めします。最後に、ブロックはコードのクリーンアップなどに使用されます。

ここで、エラー メッセージを catch ブロックに入れる必要があります。

try catch finally に関するその他の事項

Try Block: コードを try ブロックでラップして、何かを実行しています (DB の取得、接続、関数の呼び出しなど)。

Catch ブロック: これらのブロックにラップされたコードは、try ブロックで例外が発生したときに実行されます。必要に応じて、特定の例外ごとに複数の catch ブロックを使用できます。

最後に: 最終ブロックは、例外や try ブロックの実行の成功に関係なく常に実行され、このブロックはコードのクリーンアップに使用されます。この例を考えてみましょう - データベース接続を作成してからデータを取得しようとすると、接続は成功しますが、クエリにエラーがあり、例外が発生してブロックをキャッチします。あなたがする必要があるのは、最終的に接続を閉じて、開いている接続を持たないようにすることです。

それが役立つことを願っています。

于 2012-10-05T07:13:57.110 に答える
0

ご参考までに:

Try ブロックは、含まれているコードを実行します。実行時に例外が発生すると、Catch によってキャッチされます。

とにかく、Finally ブロックは実行されます。

于 2012-10-05T06:59:01.520 に答える
0

最後に、アプリケーションが例外をスローするかどうかに関係なく、常に実行されます。そのため、テキストが上書きされることが予想されます

于 2012-10-05T06:59:59.570 に答える