1

特定の例外の処理を追加したい

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

かなり低レベルのどこかで例外メッセージに対して文字列比較を行うことを好みます。これにより、アプリケーション ロジックで、My_Module_Exception_MysqlGoneAway文字列比較を含む catch 例外句をあちこちに散らばらせるのではなく、のようなわかりやすい例外を簡単にキャッチできます。アプリケーションロジック。

したがって、この特定のケースでは、エラーは load() メソッドからトリガーされているため、Mage_Core_Model_Abstract を書き直して、load() メソッドをオーバーロードし、例外処理を追加することができます。しかし、それは防弾ではありません.b / cこの種のことは、コレクションのロードまたはおそらくコードの他の領域からもトリガーされる可能性があります.

したがって、他のオプションは でオーバーライドlib/Varien/Db/Adapter/Pdo/Mysql.phpapp/code/local、そこに例外処理を追加することですが、適切な例外クラスを用意するだけではやり過ぎのように思えます。

これを行う簡単な方法はありますか?

4

1 に答える 1

1

あなたが提案したように、最善の解決策は、MySQL トランザクションが使用するファイルであるため、ローカルで MySQL.php アダプターをオーバーライドすることです。このエラーについては、MySQL がなくなったということは、より大きな問題があることを意味する可能性があるため、原因を詳しく調べます。

MySQL にログインして、接続が切断されている理由を確認していますか?

ただし、ポイントに戻ると、アダプタークラスは、他のすべてのクラスがそこのロジックを継承する場所であり、データベースをクエリするための主力です。例外をキャッチするために追加のロジックを追加する必要がある場合がいくつかあります。接続、RawQuery など。

于 2013-04-24T20:40:02.873 に答える