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

Php 新手:抛出新异常-我们可以更改异常名称吗?,php,exception,try-catch,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

我试着处理例外情况

所以我有点像:

如果发生了不好的事情:

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

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

class CreateContactException extends Exception {}
尝试将其他类作为异常抛出将导致错误

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

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

好啊所以这将是第一件要做的事。创建一个扩展异常的类。如果它是空的,为什么不直接使用Exception呢?假设我们创建了那个类,我们如何将getCode和getMessage与我们的抛出参数关联起来呢?我有点迷路了我意识到。。。再次感谢MEM
为什么不直接使用异常来代替呢
,因为您希望更具体,并且能够抛出和捕获特定的异常类型。因为它扩展了Exception,所以它继承了Exception拥有的所有方法,所以getCode和getMessage可以工作。谢谢。)“getCode和getMessage将起作用”-确定。但是它们与以前作为抛出参数传递的$codigo、$result->msg有何关联?@MEM,请参阅文档: