【问题标题】:Is catch an error here? should i use parameter for catch()?在这里捕获错误吗?我应该为 catch() 使用参数吗?
【发布时间】:2012-02-05 06:46:35
【问题描述】:

以下代码适用于前两个国家/地区选择(textbox10)。但不适用于第三选择。选择“美国”时,应出现一个文本框(textbox4),而对于其他国家/地区选择,应出现另外两个文本框(posttxt 和 phonetxt)。它适用于前两个选择,但不适用于第三个选择。我应该怎么办?我应该使用参数来捕获吗?

private void textBox10_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    try
    {
        ComboBoxItem country_list = null;
        country_list = (ComboBoxItem)textBox10.SelectedItem;

        if (country_list.Content.ToString() != "United States")
        {
            textcombobox.Visibility = Visibility.Visible;
            cmbState.Visibility = Visibility.Collapsed;

            textBox4.Visibility = Visibility.Collapsed;
            posttxt.Visibility = Visibility.Visible;
            phonetxt.Visibility = Visibility.Visible;
        }
        else
        {
            textcombobox.Visibility = Visibility.Collapsed;
            cmbState.Visibility = Visibility.Visible;

            textBox4.Visibility = Visibility.Visible;
            posttxt.Visibility = Visibility.Collapsed;
            phonetxt.Visibility = Visibility.Collapsed;
        }
    }
    catch
    {
    }
}

【问题讨论】:

  • 它抛出了哪个异常?

标签: c# exception parameters try-catch visibility


【解决方案1】:

实际上将某种形式的错误处理代码放入您的 catch 块中将是一个好的开始。仅仅捕获所有异常是非常糟糕的做法,在那里什么都不做只会让你猜测出了什么问题。如果您的唯一目的是阻止错误显示,我建议删除 try/catch,并找出错误的根本原因

【讨论】:

  • 我的目的是让它为每一个选择的文本框运行。选择“美国”将显示 textbox4,但选择任何其他国家/地区将显示 posttxt 和 phonetxt。当我第一次选择“美国”时它正在工作。然后在我将其更改为任何其他国家/地区时也可以使用。但在那之后,当我再次将其更改为“美国”时,它没有显示正确的文本框。它保持不变以供进一步选择。那么问题在哪里?
  • 所以,您添加了 try/catch,因为您遇到了某种错误。而不是找到根本原因,你只是隐藏它。我怀疑您可以通过找到并解决根本原因来解决您遇到的问题。
【解决方案2】:

如果您只想在调试器中查看该异常,您可以让 Visual Studio 捕获所有抛出的异常,方法是单击“调试 -> 异常...”菜单并确保公共语言运行时的“抛出”列检查异常。

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多