我设计了一个简单的程序,它有一个计数器类,并且在计数器类内部我有增加计数,减少计数等的方法。然后,我向用户展示一个菜单,让他们进入他们的选择,例如。输入1作为选项1,等等。我不希望计数是负数,所以为了处理这个问题,我使用计数器类的SubtractCount方法抛出ArguemetOutOfRangeException,当计数< 0.在这种情况下我应该使用例外吗?
然后我有如果它发生,我的switch语句会捕获该异常。我的问题是:使用例外来确保计数永远不会是负数是不是很糟糕?我应该以不同的方式做吗?或者更好的是,有没有更好的方法来实现这一目标?
代码片段:
static void Driver()
{
switch (userChoice)
{
case 1: // if user picks a 1, the count is deincremented
try {
myObjectOfCounterClass.SubtractCount();
}
catch (ArguemetOutOfRangeException ex)
{
console.writeLine(ex.message);
}
break;
// case 2, case 3 etc.
}
class Counter
{
private int count;
public void SubtractCount()
{
if (count < 0)
throw new ArguementOutOfRangeException("The count can never be negative!");
else
count--;
}
我的目标是确保当最终用户打开菜单时,如果选中的话会导致错误的菜单项被禁用或不可用。我认为这是一个变化“在关头”设计模式:) – BillW 2009-11-26 10:04:42