Muszę się Was poradzić, jakiej obsługi błędów używacie?
Ja używam: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); zaraz po zdefiniowaniu połączenia.
Czy jest jakiś lepszy sposób. Może z dokładniejszymi opisami błędów?
pozdro
if(zapiszdane1()){ if(zapiszdane2()){ if(zapiszdane3()){ if(zapiszdane4()){ }else{ } }else{ } }else{ } }else{ }
try{ zapiszdane1(); zapiszdane2(); zapiszdane3(); zapiszdane4(); }catch(Exception $ex){ }
public function _update($id = null) { try { $product = Product::find($id); $data = $this->params->get('product'); $data['discount_limit'] = $data->getFloat('discount_limit') / 100.0; // 13.2% => 0.132 $oldProfile = $product->getProfile(); $oldOptionGroupID = $product->option_group_id; $product->setAll($data); $this->tryToCreateProducer($product); // ! after setAll() to overwrite producer_id $product->save(); // categories $product->updateCategoryAssignment( $oldIDs, $newIDs ); // profile $newProfile = $product->getProfile(); $this->setUpProfile($product, $this->form('product_field'), $oldProfile, $newProfile); // options/variants $oldVariantsData = $this->params['variant']['old']; $newVariantsData = $this->params['variant']['new']; $newOptionGroupID = $product->option_group_id; $this->setUpVariants($product, $newVariantsData, $oldVariantsData, $newOptionGroupID, $oldOptionGroupID ); // index.. $this->refreshProductNiceURLs($product); $this->reindexProduct($product); } catch ( DAO_ValidationException $e) { // tu pokaze ponownie ekran edycji produktu jesli w ktorymkolwiek miejscu produkt zostal nieprawidlowo wypelniony // danymi przez usera, a to moze byc kilka poziomow glebiej w poziomie wywolan metod (IF-hell jesli by to robic bez wyjatkow // ktore same "wyskakuja" w gore stosu wywolania // no i nie moge tu logowac bledow $this->view->product = $product; $this->renderAction('edit.tpl', 'product/tpl_admin/product_popup.tpl'); } }
try { $product = Product::find($id); $oldProfile = $product->getProfile(); $newProfile = $product->getProfile(); } catch ( DAO_ValidationException $e) { }
try { $product = Product::find($id); $oldProfile = $product->getProfile(); $newProfile = $product->getProfile(); } catch ( DAO_ValidationException $e) { } catch ( FindException $e) { } catch ( getProfile $e) { if (oldprofile)... if (newProfile) }