数据库模型中的异常,我该如何处理?

时间:2011-03-11 21:08:24

标签: php

我正在为一个小型PHP应用程序创建一个模型。这将利用PDO与MySQL服务器进行通信。我已经理解推荐的错误模式是抛出异常的模式,因为它允许优雅的错误处理。但我不明白我应该如何处理这些例外?

从技术上讲,这很简单,但让我举个例子:

class Model()
{
    private $host = "localhost", 
            $user = "",
            $pass = "",
            $DBH;


    function __construct()
    {
        try
        { 
            $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

            $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        }  
        catch(PDOException $e)
        {  
            error_log($e->getMessage());
        }
    }
}

如果我在控制器中创建一个对象模型,但它失败了,我无法在我的控制器中处理它,对吧?或者当我创建该对象时会发生什么,“新模型”返回false?

请原谅我是一名新手,但我希望能够处理模型中其他功能的任何异常。我该怎么办呢?我需要能够知道控制器中是否出现了问题,并且能够在那里做适当的事情。

2 个答案:

答案 0 :(得分:1)

如果您希望控制器也捕获异常,则可以在记录后始终重新抛出它。

class Model()
{
    ...

    function __construct()
    {
        try
        { 
            ...
        }  
        catch(PDOException $e)
        {  
            error_log($e->getMessage());
            throw $e;
        }
    }
}

答案 1 :(得分:0)

完全取决于error_log函数的功能。

您可以返回例外。 您可以在记录错误后死亡(假设您的应用程序无法访问数据库,则无法恢复正常)。 您可以通过throw();

返回自定义异常

这真的只是你的偏好。