RadioButtons和投掷例外

时间:2013-05-18 16:10:19

标签: c# exception radio-button

我有两个单选按钮供用户选择他们喜欢的电影类型。这只是一个示例程序,因为我想了解更好地抛出异常。当用户单击显示按钮时,它会显示他们选择的电影类型,即动作或喜剧。如果没有选择它会引发异常,这是我能想出来的最佳方式,这是朝着正确的方向发展的吗?

 string selection;
        try
        {
            if (radAction.Checked)
            {
                selection = radAction.Text;
            }
            else
                if (radComedy.Checked)
                {
                    selection = radComedy.Text;
                }

                else
                    throw new ArgumentNullException("Please Choose Movie Type");
            MessageBox.Show(selection);
        }

        catch(ArgumentNullException msg)
        {
            MessageBox.Show(msg.Message);
        }

2 个答案:

答案 0 :(得分:0)

在您的方案中显示错误消息并不是一个好习惯。使用try...catchthrow...Exception始终会带来性能损失。尽量避免尽量避免。请参阅此SO post以获取进一步的参考。

但如果您真的坚持使用try...catch,那么请创建自己的用户定义的异常。

 public class MovieSelectionNotFoundException : Exception
 {
     public MovieSelectionNotFoundException()
     {
     }

     public MovieSelectionNotFoundException(string message)
         : base(message)
     {
     }

     public MovieSelectionNotFoundException(string message, Exception inner)
         : base(message, inner)
     {
     }
 }

您可以在代码中使用此代码,如下所示:

string selection = string.Empty;
try
{
    if (radAction.Checked)
    {
        selection = radAction.Text;
    }
    else if (radComedy.Checked)
    {
        selection = radComedy.Text;
    }

    else
        throw new MovieSelectionNotFoundException("Please Choose Movie Type");

    MessageBox.Show(selection);
}

catch (MovieSelectionNotFoundException msg)
{
    MessageBox.Show(msg.Message);
}

答案 1 :(得分:0)

例外是针对意外和特殊情况。如果你知道这种情况,你应该控制这种情况并避免使用例外。

my requirements specifically call for try, catch

对于最坏的情况,尝试使用catch块是一件好事,但您仍然可以满足您的要求而不会抛出异常。但是你真的需要抛出异常,当你可以用一个简单的条件控制案例时。

如果您确实需要抛出异常,可以implement a custom exception或使用System.Exception下已实施的异常。