0

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

 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);
        }
4

2 回答 2

0

在您的场景中显示错误消息根本不是一个好习惯。使用try...catchandthrow...Exception总是会带来性能损失。尽量避免。请参阅此SO 帖子以供进一步参考。

但是如果你真的坚持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);
}
于 2013-05-18T16:23:17.787 回答
0

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

my requirements specifically call for try, catch

拥有 try catch 块对于最坏的情况是一件好事,但您仍然可以满足您的要求而不会引发异常。但是你真的需要抛出异常吗,当你可以用一个简单的条件来控制情况时。

如果确实需要抛出异常,可以实现自定义异常或使用System.Exception下已经实现的异常。

于 2013-05-18T16:33:50.217 回答