在php中使用自定义异常类有什么意义?

在php中使用自定义异常类有什么意义?,php,exception-handling,try-catch,Php,Exception Handling,Try Catch,在某些库中,通常为每个错误条件创建自定义异常类,例如: class FileNotFound_Exception extends Exception {} 您可以处理特定类型的异常,但是您不能读取所有库的所有源代码来记住每个异常类,也不能充分利用使用自定义异常。大多数时候,我只是用基本异常类捕捉它们: catch (Exception $e) { // log and display friendly error } 有没有其他方法可以利用自定义异常类,而不用编写一长串catch块?

在某些库中,通常为每个错误条件创建自定义异常类,例如:

class FileNotFound_Exception extends Exception {}
您可以处理特定类型的异常,但是您不能读取所有库的所有源代码来记住每个异常类,也不能充分利用使用自定义异常。大多数时候,我只是用基本异常类捕捉它们:

catch (Exception $e)
{
    // log and display friendly error
}
有没有其他方法可以利用自定义异常类,而不用编写一长串catch块?
我喜欢例外情况,但不知道如何正确使用它们。谢谢。

拥有自己的异常类的好处是,作为库的作者,您可以捕获并处理它

try {
   if(somethingBadHappens) {
     throw MyCustomException('msg',0)
   }
} catch (MyCustomException $e) {
  if(IcanHandleIt) {
    handleMyCustomException($e);
  } else {
    //InvalidArgumentException is used here as an example of 'common' exception
    throw new InvalidArgumentException('I couldnt handle this!',1,$e);
  }
}

自定义异常类允许您正确地路由错误,以便更好地处理

如果你有课

class Known_Exception extends Exception {}
还有一个像这样的试抓块:

try {
    // something known to break
} catch (Known_Exception $e) {
    // handle known exception
} catch (Exception $e) {
    // Handle unknown exception
}
然后您知道异常$e是一个未知的错误情况,可以相应地处理它,这对我非常有用。

(文章)