-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

finally 块正在工作,问题是由于您正在重定向到同一页面,因此您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

供参考:

Try 块将执行它包含的代码。如果任何异常在运行时被触发,它将被 Catch 捕获。

无论如何,Finally 块都会执行。

于 2012-10-05T06:59:01.520 回答
0

无论您的应用程序是否抛出异常,最终总是会被执行。所以您希望文本被覆盖

于 2012-10-05T06:59:59.570 回答
0

我认为您的 finally 代码块工作正常。也许您的 lbl 文本丢失了,因为未启用视图状态。

我建议您不要在 finally 块中写入错误消息。finally 块用于代码清理等。

在这里,您需要将错误消息放入 catch 块中。

关于 try catch finally 的更多内容

Try Block:在你正在做的事情(数据库检索、连接、调用函数等)的地方用 try 块包装代码

Catch 块:包装在这些块中的代码将在 try 块中出现异常时执行,如果您愿意,可以有多个 catch 块,每个块用于特定的异常。

finally:不管try块的异常或成功执行,finally块总是运行,这个块用于代码清理。考虑这个例子 - 你创建了一个数据库连接,然后尝试检索一些数据,你的连接是成功的,但是你的查询中有一个错误,然后会有一个异常,它会来捕获块。您需要做的是最终关闭连接,这样您就不会有任何打开的连接。

我希望它会有所帮助。

于 2012-10-05T07:13:57.110 回答