PHP.为什么有不同类别的例外?例如:PDOException vs Exception?

Sta*_*ann 6 php exception-handling exception

好.非常完全没有问题,但我真的没有线索,也找不到明确的答案:

为什么有不同的异常类?例如:PDOException vs Exception?它通过我的大脑的方式:如果代码中发生了错误 - 将抛出异常 - 对吧?为什么什么类型的例外很重要?

例:

try {
     some code
}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
Run Code Online (Sandbox Code Playgroud)

vs Exception类:

try {
     some code
}
catch(Exception $e)
    {
    echo $e->getMessage();
    }
Run Code Online (Sandbox Code Playgroud)

谢谢:)

j_f*_*yre 9

因为您不应该以相同的方式处理所有异常.

如果捕获异常,则可能/应显示错误消息.但你可以/应该做一些其他事情.它取决于您收到的异常类型.

如果没有数据库连接 - >显示消息

如果查询失败 - >显示消息并可能执行回滚

...

最后,你应该捕获所有类型的异常,最后一个应该是 Exception

try {
 some code
}
catch(PDOException $e)
{
    echo $e->getMessage();
    // Do something
}
catch(XYZException $e)
{
    echo $e->getMessage();
    // Do something different
}
catch(Exception $e)
{
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)