2009-11-06 121 views
0

我在課堂上有各種功能。在每個函數中,我使用try ... catch。有什麼辦法可以簡化嗎?我想創建一個錯誤類,它必須可以從我的項目中的任何文件訪問。我不想在每個函數中使用try..catch,而應該將其自動定向到Error類。避免多次嘗試... catch塊

回答

1

我不在函數本身中添加try catch,而是在函數被調用的頁面中添加try catch。

如:

try 
{ 
    $faq_title = mysqli_real_escape_string($link, $_POST['faq_title']); 
    $faq_subtitle = mysqli_real_escape_string($link, $_POST['faq_subtitle']); 
    $desc = mysqli_real_escape_string($link, $_POST['desc']); 
    $faq_e = new Shopadmin(); 
    $faq_e->add_faq($faq_title, $faq_subtitle, $desc); 
    $feedback = "<div class='succes'>FAQ added succesfully!</div>"; 
} 
catch(Exception $e) 
{ 
    $feedback = "<div class='error'>"; 
    $feedback .= $e->getMessage(); 
    $feedback .= "</div>"; 
} 

,並在我的功能我檢查如果查詢成功地或者不這樣做,如果不是我拋出一個新的異常,將被獲取,並存儲到$反饋,我回聲出的主要容器分區。

這種方式,你可以調用不同的功能withouth的有添加的嘗試捕捉每個功能

我希望這可以幫助你

0

註冊一個全局異常捕獲器。這個函數將捕獲任何未捕獲的異常。您應該像使用register_session那樣做,也就是在每個頁面中包含的某個文件中,以便它可以在整個網站上運行。

參見:http://php.net/manual/en/function.set-exception-handler.php

但請注意,你不能從這樣的異常中恢復(你不能處理錯誤並繼續)。

-1

基本上這是一個要求,幾乎所有的項目,因爲他們變得更大。解決方案是創建一個錯誤處理模塊。你可以從頭創建一個或使用已有的真棒模塊,如ELMAH

+0

ELMAH爲ASP.net,我們所談論的PHP這裏 – Palantir 2009-11-06 10:58:17

+0

哎呀,我的壞,只是匆匆的血。 – theraneman 2009-11-20 11:26:17

1

這聽起來像你用錯誤的方式使用異常。一般情況下不應該引發異常,或者至少不應該經常被發現。您可能需要查看其他questions和/或answers,以更詳細地解釋異常使用情況。