是否有充分的理由在两个try AND catch块中放入相同的代码?


13

在方法中的file:中app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phprender()似乎在try和catch块中正在运行完全相同的代码。根本不处理异常。我很想知道写这样的代码的原因(如果有的话):

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

Answers:


3

在我看来,在这种特定情况下没有理由使用这样的代码。

我可以考虑在处理超时请求时可以这样做的原因。

例如:

  • 有些代码要花很长时间才能完成
  • 您尝试执行取决于此代码结果的操作
  • 由于代码尚未完成,但引发了异常
  • 在您的catch块中,添加一些等待时间(sleep),然后重试

但是无论如何,这是非常糟糕的设计,并且在性能方面也很糟糕,因为异常会消耗大量资源。

catch块只能用于异常处理和未完成内容的回滚(例如,数据库回滚)

我没有检查您提到的代码的整个方法,但是每当我看到类似的代码时,我都倾向于认为应该对代码进行重构和/或需要与程序员交谈以了解此类代码背后的原因,例如此类代码可能会在代码中更深处隐藏更大的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.