2013-04-24 45 views
1

我想在一些操作添加特定的異常Magento的異常處理

Zend_Db_Statement_Exception' with message 
'SQL ERROR: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away 

我寧願做對異常消息字符串比較的地方相當低的水平,所以,在我的應用程序邏輯,我可以簡單地捕獲一個漂亮友好的異常,如My_Module_Exception_MysqlGoneAway,而不是在它們的字符串比較中捕獲異常子句,散佈有關我的應用程序邏輯。

因此,在這種特殊情況下,錯誤是由load()方法觸發的,所以我可以重寫Mage_Core_Model_Abstract,重載load()方法並添加異常處理。但這不是防彈的,B/C這種事情也可能從集合負載或其他可能的代碼區域觸發。

所以另一個選項是覆蓋 app/code/local,並在那裏添加異常處理,但這似乎有點像過度殺傷只是爲了有一個很好的異常類。

有沒有更簡單的方法來做到這一點?

+0

僅供參考,Magento現在有它自己的StackExchange站點:http://magento.stackexchange.com – 2013-04-24 17:46:18

+0

謝謝,雅我一直在使用它。實際上特意在SO上發佈了這一個來衡量反應。關於問題是否應該繼續發佈到SO或者是否存在,在這個問題上正在進行辯論。我正在這裏試水。 – kalenjordan 2013-04-24 23:57:16

回答

1

正如你所建議的,最好的解決方案是重寫本地的MySQL.php適配器,因爲這是任何MySQL事務將使用的文件。對於這個錯誤,雖然我會更加註意MySQL的消失可能意味着更大的問題。

您是否正在登錄MySQL,看看它爲什麼會斷開連接?

儘管如此,適配器類是所有其他類繼承邏輯的地方,也是查詢數據庫的主要工作,有幾個實例需要添加額外的邏輯來捕獲異常。連接,RawQuery等

+0

謝謝詹姆斯。是的,我們一直在努力確定根本原因。我知道mysql離開是一個比異常處理更大的關注。但是我也問過這個問題b/c還有其他一些情況(mysql錯誤之外),我想用它來處理異常,這個問題的答案將會嚴格適用於其他的情況。 – kalenjordan 2013-04-24 23:58:47