PHP。为什么会有不同类别的异常(exception)情况?例如 : PDOException vs Exception?

标签 php exception exception-handling

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

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

示例:

try {
     some code
}
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

与异常类:

try {
     some code
}
catch(Exception $e)
    {
    echo $e->getMessage();
    }

谢谢:)

最佳答案

因为你不应该以同样的方式对待所有异常。

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

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

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

...

最后,你应该捕获所有类型的异常,最后一个应该是 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();
}

关于PHP。为什么会有不同类别的异常(exception)情况?例如 : PDOException vs Exception?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5152147/

相关文章:

php - 文本区域不显示默认文本

exception - 如何捕获 mule 流中的任何异常

java - 从 Java 调用 Clojure 抛出不包含堆栈跟踪的 NullPointerException

java - 我应该如何让未经检查的异常冒泡并记录下来?

php - 在 Laravel 5 中设置全局变量

php - 显示每个用户的三张图片

php - 我无法将某些值从 html 复选框数组传递到我的 php 页面?

c++ - 使用function-try-block时在Visual Studio中发出C4297警告(假定函数不会引发异常,但会引发异常)

wcf - ELMAH 的错误日志记录在带有 basicHttpBinding 的 IIS 中托管的 WCF 服务中不起作用

exception-handling - 如何实现顶级异常处理?