Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łapanie wyątków z baz danych
tadeurz
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 1
Dołączył: 25.04.2009

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


Witam mam kolejne pytanie.
Komunikując się z jakąkolwiek bazą danych używamy driverów, one są tak genialne że wyrzucają nam wyjątki. Rozchodzi mi się o sens wyłapywania wyjątku przy każdym zapytaniu. Po dłuższym zastanowieniu doszedłem do wniosku, że to nie ma sensu. W przykładach posłużę się MongoDB.
  1. //w ciele wrappera/adaptera mamy utworzenie klienta
  2. Try{
  3. $this->db = new MongoClient();
  4. }catchMongoConnectionException $e){
  5. ...
  6. }
  7. //gdzieś w kodzie
  8. //pobieramy gdzieś listę użytkowników
  9. Try{
  10. $usersCursor = $this->db->myDB->collections->find()
  11. }catch(MongoCursorException $e){
  12. ...
  13. }
  14. //chcemy pobrać informacje na temat użytkownika
  15. Try{
  16. $query = array(_ID=>$player);
  17. $usersCursor = $this->db->myDB->collections->findOne($query)
  18. }catch(MongoCursorException $e){
  19. ...
  20. }

Takie łapanie błędów ma sens tylko w fazie debugowania jeżeli zapytanie nie działa tak jak chcemy. Jeżeli nasze zapytanie zadziała raz, to nie ma szans, żeby nagle przestało działać i wyrzucać wyjątki. Dlatego jedynym miejscem gdzie wystarczy złapać wyjątek jest:
  1. Try{
  2. $this->db = new MongoClient();
  3. }catchMongoConnectionException $e){
  4. ...
  5. }


Mylę się?

Ten post edytował tadeurz 9.08.2013, 09:21:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(tadeurz @ 9.08.2013, 10:20:22 ) *
Jeżeli nasze zapytanie zadziała raz, to nie ma szans, żeby nagle przestało działać i wyrzucać wyjątki.

No nie do końca. W przypadku większości SELECTów czy DELETów pewnie tak będzie (pomijając SQL Injection mogące spowodować błąd), ale np. INSERTy czy UPDATy mogą czasem nie przejść (błąd klucza obcego, dane przekraczające zakres pola itd.).
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 22:17