Gibt es einen guten Grund, den gleichen Code in die try AND catch-Blöcke einzufügen?


13

In der Datei: app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpinnerhalb des render()Verfahrens, wie es scheint , die exakt gleiche Code wird den Versuch und catch - Blöcke in beide laufen wird. Die Ausnahme wird überhaupt nicht behandelt. Ich bin gespannt, aus welchen Gründen (falls vorhanden) Code wie dieser geschrieben wurde:

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);
}

Antworten:


3

Für mich gibt es in diesem speziellen Fall keinen Grund für einen solchen Code.

Ich kann mir Gründe vorstellen, wo Sie das tun könnten, wenn Sie sich mit Timeout-Anfragen befassen.

Beispielsweise:

  • es dauert verrückt lange, bis ein Code fertig ist
  • Sie versuchen, etwas zu tun, das vom Ergebnis dieses Codes abhängt
  • Da der Code noch nicht fertig ist, wird eine Ausnahme ausgelöst
  • In Ihrem Catch-Block fügen Sie eine Wartezeit hinzu ( sleep) und versuchen es erneut

Aber in jedem Fall ist dies ein sehr schlechtes Design und es ist schlecht in Bezug auf die Leistung, da Ausnahmen ressourcenaufwendig sind.

Der catchBlock darf nur zur Ausnahmebehandlung und zum Rollback von unfertigem Material verwendet werden (zB Datenbank-Rollback)

Ich habe nicht die gesamte Methode für den von Ihnen erwähnten Code überprüft, aber wenn ich einen solchen Code sehe, bin ich der Meinung, dass der Code überarbeitet werden sollte und / oder ein Gespräch mit dem Programmierer erforderlich ist, um den Grund für diesen Code als solchen Code zu verstehen kann größere Probleme tiefer im Code verbergen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.