在PHP中重新抛出异常

时间:2013-09-19 20:56:46

标签: php exception try-catch throw

我正在开发一个计算某些价值的内部网站。 我需要向用户显示使用简单消息而不是PHP错误从计算中消失的错误。 我也在研究在PHP中抛出异常 在这种情况下,这是重新抛出异常的好方法吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,这是一个好方法。

<?php
 class customException extends Exception
  {
  public function errorMessage()
    {
    //error message
    $errorMsg = $this->getMessage().' is not a valid E-Mail address.';
    return $errorMsg;
    }
  }

$email = "someone@example.com";

try
  {
  try
    {
    //check for "example" in mail address
    if(strpos($email, "example") !== FALSE)
      {
      //throw exception if email is not valid
      throw new Exception($email);
      }
    }
  catch(Exception $e)
    {
    //re-throw exception
    throw new customException($email);
    }
  }

catch (customException $e)
  {
  //display custom message
  echo $e->errorMessage();
  }
     ?>

示例说明: 上面的代码测试电子邮件地址是否包含字符串“example”,如果是,则重新抛出异常:

  1. customException()类是作为旧异常类的扩展而创建的。这样它就可以继承旧异常类
  2. 中的所有方法和属性
  3. 创建了errorMessage()函数。如果电子邮件地址无效,此函数将返回错误消息
  4. $ email变量设置为有效电子邮件地址的字符串,但包含字符串“example”
  5. “try”块包含另一个“try”块,可以重新抛出异常
  6. 由于电子邮件包含字符串“example”
  7. ,因此触发了异常
  8. “catch”块捕获异常并重新抛出“customException”
  9. 捕获“customException”并显示错误消息
  10. 如果异常没有在当前的“try”块中捕获,它将在“更高级别”上搜索一个catch块。