Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obsługa błędów w PDO
nowy_pehapowiec
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Ojej, moze przesadzilem z ku***ca (IMG:style_emoticons/default/smile.gif)

Ale wyjatki pozwalaja oddzielic normalny kod akcji (wewnatrz try{}) od czesci do obslugi bledow (catch{}).
Zamiast miec lasu ifow() po prostu wykonuje operacje, a bledy obsluguje "na dole".

  1. public function _update($id = null)
  2. {
  3. try
  4. {
  5. $product = Product::find($id);
  6. $data = $this->params->get('product');
  7. $data['discount_limit'] = $data->getFloat('discount_limit') / 100.0; // 13.2% => 0.132
  8.  
  9. $oldProfile = $product->getProfile();
  10. $oldOptionGroupID = $product->option_group_id;
  11. $product->setAll($data);
  12. $this->tryToCreateProducer($product); // ! after setAll() to overwrite producer_id
  13. $product->save();
  14.  
  15. // categories
  16. $oldIDs = (array)$data->get('category_id')->get('old')->getAll();
  17. $newIDs = (array)$data->get('category_id')->get('new')->getAll();
  18. $product->updateCategoryAssignment( $oldIDs, $newIDs );
  19.  
  20. // profile
  21. $newProfile = $product->getProfile();
  22. $this->setUpProfile($product, $this->form('product_field'), $oldProfile, $newProfile);
  23.  
  24. // options/variants
  25. $oldVariantsData = $this->params['variant']['old'];
  26. $newVariantsData = $this->params['variant']['new'];
  27. $newOptionGroupID = $product->option_group_id;
  28. $this->setUpVariants($product, $newVariantsData, $oldVariantsData, $newOptionGroupID, $oldOptionGroupID );
  29.  
  30. // index..
  31. $this->refreshProductNiceURLs($product);
  32. $this->reindexProduct($product);
  33. }
  34. catch ( DAO_ValidationException $e)
  35. {
  36. // tu pokaze ponownie ekran edycji produktu jesli w ktorymkolwiek miejscu produkt zostal nieprawidlowo wypelniony
  37. // danymi przez usera, a to moze byc kilka poziomow glebiej w poziomie wywolan metod (IF-hell jesli by to robic bez wyjatkow
  38. // ktore same "wyskakuja" w gore stosu wywolania
  39. // no i nie moge tu logowac bledow
  40. $this->view->product = $product;
  41. $this->renderAction('edit.tpl', 'product/tpl_admin/product_popup.tpl');
  42. }
  43. }
Go to the top of the page
+Quote Post

Posty w temacie
- nowy_pehapowiec   Obsługa błędów w PDO   23.09.2009, 10:46:04
- - erix   Łapanie wyjątków, to chyba najlepszy z dostępnych ...   23.09.2009, 10:51:02
- - nospor   Cytatjeśli chciałbyś dokładniejszych opisów błędów...   23.09.2009, 10:58:47
- - fander   Cytat(nospor @ 23.09.2009, 11:58:47 )...   23.09.2009, 12:45:58
- - nospor   no ok, ale jak to ma się do pytania? Chodzilo o ko...   23.09.2009, 12:49:40
- - fander   w takim razie niech kolega filtruje i używa PDOExc...   23.09.2009, 13:20:14
- - nospor   no przeciez uzywa wlasnie wyjatkow. w pytaniu chod...   23.09.2009, 13:23:09
- - nowy_pehapowiec   dzięki za wszystkie odp Trocha nieściśle się wyra...   23.09.2009, 16:36:30
- - Crozin   A wiesz w ogóle jak działają wyjątki?   23.09.2009, 17:21:32
- - nowy_pehapowiec   Powiem, szczerze że próbowałem się przez nie przeb...   24.09.2009, 06:53:49
- - Riklaunim   W innych bardziej spójnych pod tym względem języka...   24.09.2009, 10:23:28
- - nowy_pehapowiec   Nie do końca jarzę o co bangla z tymi wyjątkami. ...   25.09.2009, 07:37:04
- - dr_bonzo   pseudokod Kodtry { zaloguj_usera(); pobi...   25.09.2009, 09:07:09
- - nospor   przesadzacie... Pewnie mnie zlinczujecie ale... j...   25.09.2009, 09:15:53
|- - Riklaunim   Cytat(nospor @ 25.09.2009, 10:15:53 )...   25.09.2009, 10:39:39
- - erix   CytatNie lubię tego shitu gdy jest nadużywany. No ...   25.09.2009, 10:37:55
- - nospor   Cytatif(zapiszdane1()){ if(zapiszdane2()){ ...   25.09.2009, 10:40:37
- - erix   Cytatkurcze.... to ze nie uzywam wyjątków nie znac...   25.09.2009, 10:50:48
- - nospor   CytatUwierz, często coś takiego widujęAle to jest ...   25.09.2009, 10:54:21
- - dr_bonzo   Ojej, moze przesadzilem z ku***ca Ale wyjatki po...   25.09.2009, 11:11:06
- - nospor   CytatAle wyjatki pozwalaja oddzielic normalny kod ...   25.09.2009, 11:24:30
- - erix   CytatNo i super. Tylko w tym momencie nie wiesz co...   25.09.2009, 11:44:58
- - nospor   Cytathttp://pl2.php.net/manual/pl/language.exce......   25.09.2009, 11:58:04
- - erix   No nie, ale zawsze pozostaje kwestia konstrukcji w...   25.09.2009, 12:14:25


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 21:36