Existe uma boa razão para colocar o mesmo código nos blocos try AND catch?

13

No arquivo:, app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpdentro do render()método, parece que o mesmo código exato está sendo executado nos blocos try e catch. A exceção não é tratada de maneira alguma. Estou curioso para saber quais são os motivos (se houver) para escrever 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
fonte

Respostas:

3

Para mim, não há razão para esse código nesse caso específico.

Posso pensar nas razões pelas quais você poderia fazer isso ao lidar com solicitações de tempo limite.

Por exemplo:

  • algum código leva muito tempo para terminar
  • você tenta fazer algo que depende do resultado desse código
  • como o código ainda não foi feito, uma exceção é lançada
  • no seu bloco de captura, você adiciona algum tempo de espera ( sleep) e tenta novamente

Mas, em qualquer caso, esse design é muito ruim e é ruim em termos de desempenho, pois as exceções consomem recursos.

O catchbloco deve ser usado apenas para manipulação de exceção e reversão de itens inacabados (por exemplo, reversão do banco de dados)

Não verifiquei o método inteiro quanto ao código que você mencionou, mas sempre que vejo um código assim, costumo pensar que o código deve ser refatorado e / ou é necessária uma conversa com o programador para entender a razão por trás desse código como esse código pode ocultar problemas maiores mais profundamente no código.

Raphael na Digital Pianism
fonte