¿Hay una buena razón para poner el mismo código en los bloques try AND catch?

13

En el archivo: app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpdentro del render()método, parece que se está ejecutando exactamente el mismo código en los bloques try y catch. La excepción no se maneja en absoluto. Tengo curiosidad por saber cuáles son las razones (si las hay) para escribir código como este:

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);
}
David Angel
fuente

Respuestas:

3

Para mí no hay razón para tal código en ese caso específico.

Puedo pensar en razones por las que podrías hacer eso al tratar con solicitudes de tiempo de espera.

Por ejemplo:

  • algunos códigos tardan mucho tiempo en terminar
  • intenta hacer algo que depende del resultado de este código
  • como el código aún no está hecho, se lanza una excepción
  • en su bloque de captura agrega un poco de tiempo de espera ( sleep) e intenta nuevamente

Pero, en cualquier caso, este es un diseño muy malo y es malo en términos de rendimiento, ya que las excepciones consumen muchos recursos.

El catchbloque solo debe usarse para el manejo de excepciones y la reversión de cosas sin terminar (por ejemplo, reversión de la base de datos)

No verifiqué todo el método para el código que mencionas, pero cada vez que veo un código como ese, tiendo a pensar que el código debe ser refactorizado y / o es necesario hablar con el programador para entender la razón detrás de este código como tal código puede ocultar problemas más grandes en el código.

Raphael en Digital Pianism
fuente