返回bool结果并在错误返回时显示错误的函数

时间:2016-03-11 10:35:18

标签: algorithm error-handling boolean throw

我想要一个验证对象的函数。

如果出现错误结果,我想知道我的对象无效的原因。

这是一个示例算法:

public bool ValidObject(MyObjectClass obj)
{
   if(obj==null)
   {
       throw Exception("obj cannot be null");
       return false;
   }

   if(obj.A=='x'){
       throw Exception("obj cannot be x");
       return false;
   }
    ....
    ....
    // other validations
    ....
    ...

   if(obj.Students.Count()==100)
   {
       throw Exception("some error message");
       return false;
   }

   return true;
}

如果我打电话给我的功能:

if(ValidateObject(this.Obj))
{
   InsertIntoDB(this.Obj);
}
else
{
   //do something 
}

如果我的对象无效,我将收到错误。但我不想要这个。

但也许在某些情况下我想知道我的对象无效的原因。

我不想做同样的功能,但其中一个会抛出异常。我不认为这是一种正确的方法。

所以,我的第一个想法是将前一个函数设为私有并创建另一个公共函数:

public bool ValidObject2(MyObjectClass obj, bool withErrors=false)
{
  try
  {
     return ValidObject(obj);
  }
  catch(Exception ex)
  {
    if(withErrors)
    {
       throw ex;
    }
    return false;
  }
}
你怎么看?你有其他想法吗?

1 个答案:

答案 0 :(得分:0)

Rails方式:

有一个方法save保存到数据库中,并且在验证错误的情况下,只需保留它们而不会引发异常。

提供一个getter validation_errors,它会返回上一个save中的错误列表。

制作一个简单的方法save_with_validation,首先调用save然后引发异常,当且仅当validation_errors返回非空的错误集时。 (根据您的语言,您可以使用较短的名称,例如save!