新手:抛出新异常 - 我们可以更改异常名称吗?

时间:2010-07-29 10:34:41

标签: php exception try-catch

我正在尝试处理异常。

所以我有类似的东西:

如果发生了不好的事情:

throw new CreateContactException($codigo, $result->msg);

稍后,我会尝试,如果不行,请抓住:

try 
{
  createContact();
}
catch(CreateContactException $e) 
{
  $error .= 'An error occurred with the code:'.$e->getCode().' and message:'.$e->getMessage();
}

1) 这会有用吗?我的意思是,这个getCode()和getMessage()与CreateContactException参数无关吗?

2) 我必须在某处创建一个扩展Exception的CreateContactException类吗?我的意思是,我们可以为异常设置自定义名称,而无需创建扩展类吗?

提前多多感谢, MEM

1 个答案:

答案 0 :(得分:12)

异常必须只是内置Exception类的子类,因此您可以像这样创建一个新类:

class CreateContactException extends Exception {}

尝试将其他类作为异常抛出将导致错误。

使用不同名称的一个优点是您可以拥有多个catch块,这样您就可以捕获不同类型的异常并让其他人通过:

try {
    // do something
}
catch (CreateContactException $e) {
    // handle this
}
catch (DomainException $e) {
    // handle this
}