Y a-t-il une bonne raison de mettre le même code dans les deux blocs try AND catch?

13

Dans le fichier:, app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpdans la render()méthode, il semble que le même code soit exécuté dans les blocs try et catch. L'exception n'est pas gérée du tout. Je suis curieux de savoir quelles sont les raisons (le cas échéant) d'écrire du code comme ceci:

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
la source

Réponses:

3

Pour moi, il n'y a aucune raison pour un tel code dans ce cas spécifique.

Je peux penser à des raisons pour lesquelles vous pourriez le faire lorsque vous traitez des demandes de temporisation.

Par exemple:

  • un code prend un temps fou pour terminer
  • vous essayez de faire quelque chose qui dépend du résultat de ce code
  • comme le code n'est pas encore fait, une exception est levée
  • dans votre bloc catch vous ajoutez du temps d'attente ( sleep) et réessayez

Mais en tout cas, c'est une très mauvaise conception et c'est mauvais en termes de performances car les exceptions consomment beaucoup de ressources.

Le catchbloc ne doit être utilisé que pour la gestion des exceptions et la restauration des éléments inachevés (par exemple, la restauration de la base de données)

Je n'ai pas vérifié toute la méthode pour le code que vous mentionnez, mais chaque fois que je vois du code comme ça, j'ai tendance à penser que le code devrait être refactorisé et / ou une conversation avec le programmeur est nécessaire pour comprendre la raison de ce code en tant que tel code peut cacher de plus gros problèmes plus profondément dans le code.

Raphael chez Digital Pianism
la source