单选按钮和抛出异常

本文关键字:抛出异常 单选按钮 | 更新日期: 2023-09-27 18:14:09

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

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

单选按钮和抛出异常

在您的场景中显示错误消息根本不是一个好做法。使用try...catchthrow...Exception总是会带来性能损失。尽量避免。

但是如果你真的坚持使用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);
}

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

my requirements specifically call for try, catch
对于最坏的情况,拥有一个try catch块是一件好事,但是你仍然可以在不抛出异常的情况下满足你的需求。但是,当你可以用一个简单的条件来控制情况时,你真的需要抛出异常吗?

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