c#-无效的参数对异常

当给定的参数一起给出时无效时,接受多个参数的方法应该抛出哪个异常?

例如,考虑

public Bar DoSomething(Foo f1, Foo f2)
{
  //implementation...
}

如果要完成操作取决于f1和f2之间的某种关系或相似性(如果数组/集合必须大小相同;如果运动员则必须在同一队/对立团队中,等等).

每个参数都是该操作的有效参数,但是它们一起无效.例:

public MatchResult PlayMatch(Player a, Player b)
{
  if(a.Team == b.Team)
  {
    //Throw exception here, since players must be on different teams
  }

  //Play match, determine winner
}

抛出ArgumentException似乎是不正确的,因为它暗示一个参数无效,而不是一对参数无效.

解决方法:

您不必抛出异常.我认为,这甚至不应该引发异常,因为这是匹配逻辑的重要部分.我只是让匹配失败(返回零或您所做的一切),并在文档中提到了这一事实-诸如“比较来自不同团队的两名球员”.这意味着比较来自同一团队的球员将导致失败.

上一篇:团体程序设计天梯赛-练习集 [ L1-005 考试座位号 (15 分) ]


下一篇:箭头函数的注意事项