【问题标题】:How to print a message when action is succeeded?操作成功时如何打印消息?
【发布时间】:2021-04-12 13:15:51
【问题描述】:

我目前正在开发一个评分应用程序。当我编写的方法运行成功时,我想通知用户操作成功。但是,当我尝试通过将方法放在 try/catch/finally 块中来实现这一点时,无论该方法是否成功运行,都会命中 finally 块。

成功消息是一个可变字符串,所以它不在 finally 块的 "" 中。

我有以下 catch/finally 代码:

  catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                MessageBox.Show(Success);
            }

所以当方法返回错误时,用户仍然会得到操作成功的消息。我该如何解决这个问题?

谢谢。

【问题讨论】:

  • finally block is hit regardless if the method ran successful 这是真的。我建议阅读try-finally 文档以了解其工作原理。恕我直言,您不需要 finally 块。
  • 我知道 finally 块是如何工作的,我想知道如何以其他方式解决这个问题?
  • 有多种解决方法,删除 finally 块,你不需要它,写入一个变量,然后用它来显示你需要的等等......

标签: c# try-catch


【解决方案1】:

无论方法是否成功运行,都会命中 finally 块。

是的,finally 块就是这样工作的。

MessageBox.Show(Success)移动到try块的最后一行并移除finally块:

try
{
    //do something that might throw....

    MessageBox.Show(Success);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

那么MessageBox.Show(Success)只有在没有抛出异常的情况下才会被调用。

【讨论】:

  • 当我这样做时,它仍然会在遇到异常时运行成功消息
  • 不,如果您删除 finally 块,则不会。一个方法不能既返回抛出异常。
  • 很抱歉我把它放在了错误的 {} 之间。成功了,谢谢你的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
相关资源
最近更新 更多