如何修复下面的代码,以便最终部分不被覆盖,我可以在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
}
编辑:每当我简化代码以使我的问题更容易理解时,我都会面对同样的事情。许多误解。
答案 0 :(得分:3)
finally块正在运行,问题是由于您重定向到同一页面,因此lbl_Error
在回发时丢失了Text。
答案 1 :(得分:2)
如果你在finally块中放置一个断点,你会注意到总是执行。
答案 2 :(得分: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;
}
如果页面重定向,则表示未发生错误。
答案 3 :(得分:0)
供参考:
Try block将执行它包含的代码。如果运行时触发了任何异常,它将被Catch捕获。
无论如何,Finally块将会执行。
答案 4 :(得分:0)
最后总是会被执行,无论你的应用程序是否抛出异常。所以你会希望文本被覆盖
答案 5 :(得分:0)
我认为你的最终代码块工作正常。也许你的lbl文本丢失了,因为没有启用视图状态。
我建议你不要在finally块中写错误信息。最后块用于代码清理等。
在这里,您需要将错误消息放在catch块中。
关于try catch finally的更多内容
尝试阻止:使用try块包装代码,用于处理内容(数据库检索,连接,调用函数等)
Catch block:当try块中存在异常时,将执行这些块中包含的代码。如果需要,可以为特定异常分别设置多个catch块。
最后:总是块终止运行,无论异常或成功执行try块,此块用于代码清理。考虑这个例子 - 你创建了一个数据库连接,然后尝试检索一些数据,你的连接成功,但是你的查询中有一个错误然后会有一个异常,它会遇到阻塞。您需要做的是最终关闭连接,这样您就不会有任何打开的连接。
我希望它会有所帮助。