Czy istnieje dobry powód, aby umieścić ten sam kod w obu blokach try AND catch?


13

W pliku: app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpw ramach render()metody wydaje się, że dokładnie ten sam kod jest uruchamiany zarówno w blokach try and catch. Wyjątek w ogóle nie jest obsługiwany. Jestem ciekawy, jakie są powody (jeśli w ogóle) pisania takiego kodu:

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

Odpowiedzi:


3

Dla mnie nie ma powodu do takiego kodu w tym konkretnym przypadku.

Mogę wymyślić powody, dla których możesz to zrobić, zajmując się wnioskami o przekroczenie limitu czasu.

Na przykład:

  • część kodu zabiera szalenie dużo czasu
  • próbujesz zrobić coś, co zależy od wyniku tego kodu
  • ponieważ kod nie został jeszcze wykonany, zgłaszany jest wyjątek
  • w swoim bloku catch dodajesz trochę czasu oczekiwania ( sleep) i spróbuj ponownie

Ale w każdym razie jest to bardzo zły projekt i jest zły pod względem wydajności, ponieważ wyjątki pochłaniają zasoby.

catchBlok musi być używany tylko do obsługi wyjątków i wycofywania niedokończone rzeczy (np rollback bazy danych)

Nie sprawdziłem całej metody dla kodu, o którym wspomniałeś, ale ilekroć widzę taki kod, zwykle myślę, że kod powinien zostać ponownie przetworzony i / lub konieczna jest rozmowa z programistą, aby zrozumieć przyczynę tego kodu jako takiego kodu może ukrywać większe problemy głębiej w kodzie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.