Чи є вагомі причини підставити один і той же код в обох блоках спробувати І?


13

У файлі: app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpв рамках render()методу здається, що точно той самий код запускається і в блоках спробу і лову. Виняток взагалі не обробляється. Мені цікаво знати, які причини (якщо такі є) для написання такого коду:

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

Для мене в такому конкретному випадку немає підстав для такого коду.

Я можу придумати причини, з яких ви могли це зробити, коли працювали з тимчасовими запитами.

Наприклад:

  • деякий код закінчує шалено довго
  • ви намагаєтесь зробити щось, що залежить від результату цього коду
  • оскільки код ще не зроблено, викид викидається
  • у блоці вилову ви додасте деякий час очікування ( sleep) та спробуйте ще раз

Але в будь-якому випадку це дуже поганий дизайн і він поганий з точки зору продуктивності, оскільки винятки витрачають ресурси.

catchБлок повинен бути використаний тільки для обробки винятків і відкату незавершеного матеріалу (наприклад , відкат бази даних)

Я не перевіряв весь метод на код, який ви згадуєте, але щоразу, коли я бачу такий код, я схиляюся до думки, що код повинен бути відновлений і / або потрібна розмова з програмістом, щоб зрозуміти причину цього коду як такого коду може приховати більші проблеми глибше в коді.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.