簡體   English   中英

數據庫模型異常,該如何處理?

[英]Exceptions in database model, how do I handle it?

我正在為一個小型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會發生什么?

對不起,我是新手,但我希望能夠處理模型中其他函數的任何異常。 我應該怎么做? 我需要能夠知道控制器中是否出現問題,並能夠在其中執行適當的操作。

如果您還希望控制器也捕獲異常,則可以隨時在記錄后將其重新拋出。

class Model()
{
    ...

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

完全取決於error_log函數的功能。

您可以返回異常。 您可以在記錄錯誤后簡單地死掉(大概是如果您的應用程序無法訪問數據庫,則無法正常恢復)。 您可以通過throw()返回自定義異常;

這實際上只是您的偏好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM