C'è un buon motivo per inserire lo stesso codice in entrambi i blocchi try AND catch?


13

Nel file:, app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column/Renderer/Datetime.phpall'interno del render()metodo, sembra che venga eseguito esattamente lo stesso codice sia nei blocchi try che catch. L'eccezione non viene gestita affatto. Sono curioso di sapere quali sono i motivi (se presenti) per scrivere codice in questo modo:

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

Risposte:


3

Per me non c'è motivo per tale codice in quel caso specifico.

Posso pensare a motivi per cui potresti farlo quando hai a che fare con richieste di timeout.

Per esempio:

  • un po 'di codice impiega molto tempo per terminare
  • si tenta di fare qualcosa che dipende dal risultato di questo codice
  • poiché il codice non è stato ancora creato, viene generata un'eccezione
  • nel blocco catch aggiungi del tempo di attesa ( sleep) e riprova

Ma in ogni caso si tratta di un progetto pessimo ed è pessimo in termini di prestazioni poiché le eccezioni consumano risorse.

Il catchblocco deve essere utilizzato solo per la gestione delle eccezioni e il rollback di elementi incompiuti (ad es. Rollback del database)

Non ho controllato l'intero metodo per il codice che menzioni, ma ogni volta che vedo codice del genere tendo a pensare che il codice debba essere refactored e / o è necessario parlare con il programmatore per capire il motivo dietro questo codice come tale codice potrebbe nascondere problemi più profondi nel codice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.