tryブロックとcatchブロックの両方に同じコードを配置する正当な理由はありますか?


13

ファイル:app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpでは、render()メソッド内で、tryブロックとcatchブロックの両方でまったく同じコードが実行されているようです。例外はまったく処理されません。私はこのようなコードを書く理由(もしあれば)を知りたいです:

try {
     $data = Mage::app()->getLocale()
         ->date($data, Varien_Date::DATETIME_INTERNAL_FORMAT)->toString($format);
} catch (Exception $e) {
     $data = Mage::app()->getLocale()
         ->date($data, Varien_Date::DATETIME_INTERNAL_FORMAT)->toString($format);
}

回答:


3

には、その特定のケースでそのようなコードを使用する理由はありません

タイムアウトリクエストを処理するときに、それができる理由を考えることができます。

例えば:

  • 一部のコードは完了するのに非常に長い時間がかかります
  • このコードの結果に依存する何かをしようとする
  • コードはまだ完了していないため、例外がスローされます
  • catchブロックに待機時間(sleep)を追加して再試行します

しかし、いずれにせよ、これは非常に悪い設計であり、例外はリソースを消費するため、パフォーマンスの点で悪いです。

このcatchブロックは、例外処理と未完了のもののロールバック(データベースロールバックなど)にのみ使用する必要があります。

私はあなたが言及するコードのメソッド全体をチェックしませんでしたが、そのようなコードを見るたびに、コードをリファクタリングする必要があると思う傾向があります/またはそのようなコードとしてこのコードの背後にある理由を理解するためにプログラマとの話し合いが必要ですより大きな問題をコードの奥深くに隠すことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.