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

MEM*_*MEM 3 php exception try-catch

我正在尝试处理异常.

所以我有类似的东西:

如果出现不好的事情:

throw new CreateContactException($codigo, $result->msg);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

非常感谢,MEM

Dan*_*erg 12

异常必须只是内置类的子Exception类,因此您可以创建一个新的类,如下所示:

class CreateContactException extends Exception {}
Run Code Online (Sandbox Code Playgroud)

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

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

try {
    // do something
}
catch (CreateContactException $e) {
    // handle this
}
catch (DomainException $e) {
    // handle this
}
Run Code Online (Sandbox Code Playgroud)