Есть ли веская причина помещать один и тот же код в блоки 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Блок должен быть использован только для обработки исключений и отката незавершенного материала (например , откат базы данных)

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

Рафаэль в цифровом пианизме
источник