我有两个单选按钮供用户选择他们喜欢的电影类型。这只是一个示例程序,因为我想了解更好地抛出异常。当用户单击显示按钮时,它会显示他们选择的电影类型,即动作或喜剧。如果没有选择它会引发异常,这是我能想出来的最佳方式,这是朝着正确的方向发展的吗?
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);
}
答案 0 :(得分:0)
在您的方案中显示错误消息并不是一个好习惯。使用try...catch
和throw...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下已实施的异常。