使用null检查vs try-catch

时间:2019-09-06 14:50:11

标签: validation if-statement try-catch

函数应该对其服务依赖项进行验证(空检查)还是应该通过try / catch进行处理。

这种情况的一个特定示例是,例如,如果您使用带有ClearDefaulter函数的此类User,则此函数将从其维护的默认用户列表中清除该用户,这些默认用户可能保留了某些操作的默认值。这些用户可能只占用户群的> 1%的极少数,因此很少被调用。此功能取决于为默认程序提供CRUD操作的服务默认程序服务。运行defaulterservice是一种预期的情况,因此建议在功能中使用它之前,建议对它进行空检查或将其包含在try / catch中,并将其作为意外的异常处理。

function bool IsValidUser(User user, DefaulterService defaulterService, EntitlementService entitlementService)
{
  if defaulterService == null || entitlementService == null)
  {
    //Handle error on the service
    return;
  }
  if (user != null )
  {
    if (entitlementService.IsValidUser(user))
       service.ClearDefaulter(user);
 }

}

function bool IsValidUser(User user, DefaulterService service)
{
  try
  {
    if (user != null)
    {
      if (entitlementService.IsValidUser(user))
                                                service.ClearDefaulter(user);

    }
  }
  catch(Exception ex)
  {
    // Handle all exceptions
  }
}             

我认为使用try / catch的好处是在try块中仅捕获了实际的业务功能,从而提高了可读性。缺点是它的性能不如简单的if验证。会有什么建议?

0 个答案:

没有答案