【问题标题】:try/catch exceptions [duplicate]尝试/捕获异常[重复]
【发布时间】:2012-03-22 09:54:17
【问题描述】:

可能重复:
How to catch exceptions

我真的不必使用 try 和 catch 异常。我正在尝试使用 try/catch 来捕获潜在错误。现在我不确定在哪里尝试并捕获这是我现在拥有的代码..

 divide d;
    private void button1_Click(object sender, EventArgs e)
    {
        d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
        int total = d.CalculateDivision();
        MessageBox.Show(total.ToString());
    }

现在我会把它放在下面

try
{

}
catch
{
MessageBox.Show("error");
}

或者我会在代码中的某处添加 try/catch。

【问题讨论】:

  • 问题在哪里? new divide 是什么?
  • 你知道 try/catch 有点贵。因此,您可以使用 TryParse API 并对上述代码进行一些重构以避免异常。
  • 您不应该“陷入潜在错误”。快速失败,不要尝试继续可能有缺陷的过程。
  • 我真的很讨厌你在没有解释的情况下对新手投反对票:@shan:你之所以投反对票是因为对此已有问题 - 所以请在提问之前阅读常见问题解答并使用网站搜索。
  • 如果你想了解新的东西,最好在一个不涉及用户交互或事件的较小程序中开始测试,这样你就可以在不依赖事物的情况下看到程序流程是什么系统会。

标签: c#


【解决方案1】:

见http://msdn.microsoft.com/en-us/library/ms173160.aspx

try 绕过抛出异常和处理值的代码。在你的例子中:

 divide d;
private void button1_Click(object sender, EventArgs e)
{
  try
  {

    d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
    int total = d.CalculateDivision();
    MessageBox.Show(total.ToString());
  }
  catch(Exception)
  {
     MessageBox.Show("error");
  }
}

因为只有在没有例外的情况下才能显示总数。

【讨论】:

    【解决方案2】:

    不,没错;)。 就像你在那里展示的那样使用它:

    try
    {
        // Your Code.
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex);
    }
    

    【讨论】:

      【解决方案3】:

      如果抛出异常,您几乎有答案,尽管您可以这样做以获得有关可能导致它的更多信息:

      try
      {
          //your code:
          d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
          int total = d.CalculateDivision();
          MessageBox.Show(total.ToString());
      }
      catch (Exception ex)
      {
          MessageBox.Show("Error has occured! " + ex.Message);
      }
      

      在学习异常处理时,您看到的另一个提示是查看 finally 块,无论是否存在异常,它都会执行,它会在 try 之后执行捕获块:

      finally
      {
          // this code will always execute, maybe do some cleanup here
      }
      

      【讨论】:

        【解决方案4】:

        你会这样做:

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
               d = new divide(int.Parse(textBox1.Text), int.Parse(textBox2.Text));
               int total = d.CalculateDivision();
               MessageBox.Show(total.ToString());
            }
            catch(Exception error)
            {
                MessageBox.Show(error.Message);
            }
        }
        

        【讨论】:

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