php – 如何处理预期的错误?例如. “此用户名已存在”

前端之家收集整理的这篇文章主要介绍了php – 如何处理预期的错误?例如. “此用户名已存在”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很难理解我应该如何设计我的代码错误处理部分.我最近刚刚问了一个类似的问题,我应该如何进行大约 returning server error codes to the user,eg. 404 errors.我知道我应该从应用程序的当前部分处理错误;看起来很简单

但是,当我无法处理链中当前链接错误时该怎么办?例如,我可能有一个用于管理身份验证的类.其中一个方法可以是createUser($username,$password).编辑:此方法将返回一个用户标识或用户对象.在该功能中,我需要确定用户名是否已经存在.如果这是真的,我应该如何提醒调用代码呢?返回null而不是用户对象是一种方法.但是我怎么知道造成这个错误呢?

我应该如何处理错误,调用代码可以很容易地找出导致错误的原因?是否有这种情况常用的设计模式?

编辑:我忘了提到:我正在使用PHP.

解决:虽然许多人认为在这种情况下不应该使用例外,但我得出结论,这是最好的解决办法.

首先,没有简单,优雅的例外方法. (我发现,如果没有系统内置的语言是不可能的…异常已经内置了.)

其次,针对“例外情况只能用于异常情况,这不是一个”的论点:“When I call getFoo(),I actually expect to get a Foo. If I don’t get it,it’s by definition an exceptional event.”(via,pkainulainen)

有几种常见的模式:

投掷一个exception.

2.返回NULL或FALSE,并将引用设置为错误.例如.

function createUser($user,$password,&$error)
{
      //...
      // You could use any type of object here.  This is just a simple example.
      if(uniqueKeyFailure)
      {
          $error = new UserAlreadyExists();
          return NULL;
      }
      //..
}

它可以称为:

$userCreateError = NULL;
$res = createUser($user,$pass,$userCreateError);
if($res === NULL)
{
  // do something with $userCreateError
}

3.返回NULL或FALSE,并提供最后一个错误(例如curl_error).

我建议1或2.主要原因人们避免例外的“不寻常的”错误,如用户输入是性能.有这么多的讨论,比如Performance of try-catch in php.

我不推荐3,因为它不是可重入的.

猜你在找的PHP相关文章