2015-04-30 65 views
-1

我试图会员实例添加到一个种族实例:未处理的异常,不能继续

  race2.joinJunior(jmem); 
      race2.joinJunior(jmem2); 
      race2.joinJunior(jmem3); 

比赛对象(RACE2)的实例有两个变量影响下面的代码,首先是CurrentRunners (目前在参加比赛的运动员)和limitRace(车手允许加入在总比赛的极限)

public override void joinJunior(JuniorMember jm) 
     { 
      junior = jm; 

      if (jm != null) 
      { 
       //Increment the current members on the race by 1. 
       currentRunners++;  

        if (currentRunners > limitRace) 
        { 

         throw new Exception(junior.FirstName + " would be this races: " + currentRunners + "th runner. This race can only take: " + limitRace); 

        } 
      } 
      } 

我的问题是,当我添加第三个成员(jmem3)我的计划就不可能进步,而不是扔例外。

我究竟做错了什么?

+0

“我的计划无法进展”意味着什么? –

+0

所以你想让它抛出异常,但它不会进入'if'块? 'limitRace'什么值,我认为'currentRunners'在这个点上是'3'? –

回答

0

您正在抛出if块的异常。它需要在某个地方处理。我会建议显示一条消息,而不是例外。

如果你真的想抛出异常,你需要在你的代码中处理它。

你可以使用这样的事情:

public override void joinJunior(JuniorMember jm) 
{ 
if(jm != null && currentRunners < limitRace){ 

// Add runner to the list or collection 

currentRunners++; 
} 
else{ 
// Show message that list of runners is full. This will require you to change the return type of your method or add out parameters 
} 
} 

如果你去例外:

public override void joinJunior(JuniorMember jm) 
    { 
    if(jm != null && currentRunners < limitRace){ 

    // Add runner to the list or collection 

    currentRunners++; 
    } 
    else{ 
    // throw your own exception type (you will need to create this class) 
    throw new LimitExceededException("Some message here."); 
    } 
    } 

在调用者的方法,你需要这样的事情:

try{ 
       race2.joinJunior(jmem); 
       race2.joinJunior(jmem2); 
       race2.joinJunior(jmem3); 
    } 
catch(LimitExceededException ex){ 
// handle, replace or rethrow as per your application needs 
} 
+0

没关系,修正它,没有处理我的单元测试类中的异常。 –