【问题标题】:Finally block's content is running before try's content? [closed]finally 块的内容在 try 的内容之前运行? [关闭]
【发布时间】:2012-10-05 06:49:23
【问题描述】:

如何修复下面的代码,以便最终部分不会被覆盖,并且我可以在 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
}

编辑:每当我简化代码以使我的问题更容易理解时,我都会面临同样的问题。很多很多的误解。

【问题讨论】:

  • 您目前遇到什么错误?它怎么不工作?
  • 旁注:不要调用事件处理程序grd_Order.SaveClicked(sender, e),而是从此处和点击事件处理程序调用方法Save
  • Tim 这可能是我一整天看到的最没用的建议。
  • @LawrenceJohnson:需要解释一下吗?

标签: c# asp.net try-catch try-catch-finally finally


【解决方案1】:

finally 块正在工作,问题是由于您正在重定向到同一页面,因此您的 lbl_Error 在回发时会丢失其文本。

【讨论】:

  • 我已经编辑了问题,请您重新检查一下。
【解决方案2】:

如果您在 finally 块中放置一个断点,您会注意到它总是执行。

【讨论】:

  • 我已经编辑了问题,请您重新检查一下。
【解决方案3】:

您发布的代码中没有使用 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;
}

如果页面重定向,则表示没有发生错误。

【讨论】:

    【解决方案4】:

    仅供参考:

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

    Finally 块无论如何都会执行。

    【讨论】:

    • Jakub 7 分钟前给出了确切的答案。但是如果他错过了它,加强它是件好事。
    • 我同意.. 但他错过了捕获,发问者不清楚我猜的基本原理,所以我解释了它!
    【解决方案5】:

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

    【讨论】:

    • 我实际上并不想捕捉异常,我已将 lbl_Error 编辑为 lbl_Process 以防止误解。
    【解决方案6】:

    我认为您的 finally 代码块运行良好。也许您的 lbl 文本丢失了,因为未启用视图状态。

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

    这里你需要把你的错误信息放在 catch 块中。

    关于 try catch finally 的更多内容

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

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

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

    我希望它会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2014-01-08
      • 2021-10-03
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多