php - 新手 : throw new exception - can we change exception name?

标签 php exception try-catch

我正在尝试处理异常(exception)情况。

所以我有类似的东西:

如果发生不好的事情:

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 类吗?我的意思是,我们是否可以在不需要创建扩展类的情况下为异常设置自定义名称?

非常感谢, 内存

最佳答案

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

class CreateContactException extends Exception {}

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

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

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

关于php - 新手 : throw new exception - can we change exception name?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361576/

相关文章:

php - 如果输入有一个或多个问号,则从数据库获取数据。

php - Zend 无法通过代理连接到 HTTPS 服务器

javascript - 通过javascript传递数组

java - java可以处理由MS SQL Server RAISEERROR命令引起的异常吗?

c++ - 初始化列表中的 try/catch 是如何工作的?

javascript - Ajax提交两条信息到php文件

java - 内存不足 : Java heap space

c++ - MongoDB C++ 驱动程序不抛出连接错误

java - 如何抛出不会终止我的程序的 IllegalArgumentException?

c# - 验证文本框是否仅包含数字