![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Łapanie wyjątków, to chyba najlepszy z dostępnych sposobów obsługi błędów dostępnych w PHP. Nie musisz zawsze sprawdzać if(!...), tylko wrzucasz w blok try i łapiesz jak trzeba, bez zagnieżdżania setek struktur kontrolnych.
Cytat Może z dokładniejszymi opisami błędów? One są i tak wystarczająco wyczerpujące. ;] Poza tym, komunikaty błędów bazy są identyczne we wszystkich sterownikach, gdyż ich treść zwraca biblioteka kliencka, a nie akurat PDO. PDO jest tylko front-endem dla biblioteki DBMS (w przypadku MySQL - libmysql) i jeśli chciałbyś dokładniejszych opisów błędów - musiałbyś się nią zająć, a nie PDO. edit@down pewnie pokazane palcem, co konkretnie napisać, aby było ok, albo generowanie nowego, poprawnego zapytania. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat jeśli chciałbyś dokładniejszych opisów błędów - musiałbyś się nią zająć, a nie PDO. No ale pytanie: co tam można jeszcze dokładniej podawać? ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
No ale pytanie: co tam można jeszcze dokładniej podawać? ![]() http://pl.php.net/manual/en/pdo.constants.php Masz wszystkie stałe pre definiowane. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no ok, ale jak to ma się do pytania? Chodzilo o komunikat bledu a nie jakies parametry PDO
![]() Cytat pewnie pokazane palcem, co konkretnie napisać, aby było ok, albo generowanie nowego, poprawnego zapytania. I to jest myśl ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 231 Pomógł: 22 Dołączył: 6.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
w takim razie niech kolega filtruje i używa PDOException class http://pl.php.net/manual/en/class.pdoexception.php , btw tu chodzi o obsługę błędów?
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
no przeciez uzywa wlasnie wyjatkow. w pytaniu chodzilo czy jest cos lepszego. Odpowiedź juz padla...
No a moje pytanie : Cytat No ale pytanie: co tam można jeszcze dokładniej podawać? bylo pytaniem retorycznym
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za wszystkie odp
Trocha nieściśle się wyraziłem. Chodziło mi może nie tyle co o obsługę błędów w pełnym zakresie (z wyjątkami) właśnie o komunikaty o błędach. Na razie ważne dla mnie jest czy był jakiś błąd i jaki. No i: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); mi to zapewnia. Czy używając try-catch dostane coś więcej? erix pisał, że komunikaty błędów są takie same. Co więc dostaje z używania try? Jaki w nim bonus siedzi. Ale tak w praktyce, nie w teorii:) pozdro |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
A wiesz w ogóle jak działają wyjątki?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Powiem, szczerze że próbowałem się przez nie przebić ale nie zajarzyłem o co w nich bangla :| :\
Crozin mógłbyś coś napisać o tym jakieś 2 albo 3 zdania? Tak w celu pouczenia mniej zaawansowanego kolegi? pozdro |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
W innych bardziej spójnych pod tym względem językach wyjątek jest rzucany gdy aplikacja nie może działać poprawnie - np. baza nieosiągalna, błąd w zapytaniu SQL itd. PDO dokładnie w ten sposób wykorzystuje wyjątki. Jeżeli coś jest nie tak to rzucony jest wyjątek, który powinien zostać przechwycony, działanie kodu zakończone, a wyjątek gdzieś zapisany dla programisty
![]() -------------------- |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 0 Dołączył: 24.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca jarzę o co bangla z tymi wyjątkami.
Skrypt jest wykonywany i natrafia na błąd i przerywa wykonywanie. Np brak domknięcia nawiasu albo błąd w zapytaniu sql albo odwołanie się do czegoś co nie istnieje. I teraz wyświetla mi się błąd na ekranie, że w którejś linijce coś sknociłem. I to mam dzięki konfiguracji błędów w php.ini i dzięki: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); No to co jeszcze mogę osiągnąć? Co to jest ten wyjątek no za cholerę nie jarzę. pozdro |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
pseudokod
Kod try { zaloguj_usera(); pobierz_newsy(); zapisz_statystyki_w_bazie(); pobierz_z_bazy_x(); zapisz_w_bazie_a(); zapisz_w_bazie_a(); ............. zapisz_w_bazie_z(); } catch ( PDOException $e ) { // jesli cokolwiek wyzej sie nie wykona - bo np. masz bledne dane do inserta // to skrypt OD razu przeskoczy tutaj zaloguj wyjatek($e); pokaz_userowi_ze_strona_padla(); } No i sproboj to zapisac bez uzycia wyjatkow, tak zebys sprawdzal kazda operacje, a w przypadku niepowodzenia pokazal ekran bledu: Kod if ( ! zaloguj_usera() )
{ handleError(); } if ( ! pobierz_newsy() ) { handleError(); } ..... // tu powinienes dostac ku***cy Ten post edytował dr_bonzo 25.09.2009, 09:07:32 -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
przesadzacie...
Pewnie mnie zlinczujecie ale... ja nie używam wyjątków (znaczy sporadycznie używam). Nie używam ich też przy PDO. Nie lubię tego shitu gdy jest nadużywany. Błąd wczytywania newsow? ok, newsy sie nie wyswietlają, do logow idzie mi wpis o bledzie zapytania, user nie widzi wpisów. błąd zalogowania? ok, user widzi info ze blad, do logow idzie info ze blad, kur##@$ nie dostaje. Może to kwesta przyzwyczajenia. ale ku#$#4 dostaje jak widze jak ktoś pisze ze jak sie nie uzywa wyjątków to mozna ku#$#@ dostac ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Nie lubię tego shitu gdy jest nadużywany. No nie przesadzaj; nie lubisz, gdy się nadużywa if? Wyjątki, to też struktura kontrolna. Cytat dostaje jak widze jak ktoś pisze ze jak sie nie uzywa wyjątków to mozna ku#$#@ dostac A ja dostaję k@#(*$&, gdy widuję coś takiego:
Skoro można wszystko pięknie ładnie napisać w takiej postaci:
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Może to kwesta przyzwyczajenia. ale ku#$#4 dostaje jak widze jak ktoś pisze ze jak sie nie uzywa wyjątków to mozna ku#$#@ dostac ![]() hehe ;] Zależy jak zrobisz obsługę błędów. Jak będzie działa to jest dobra i tyle. Gorzej jak rzuci się coś nieprzewidzianego, co nie podpadnie pod system logowania błędów. -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat if(zapiszdane1()){ kurcze.... to ze nie uzywam wyjątków nie znaczy ze piszę tak jak tu pokazałeś. Jak widze taki kod to też załamki dostaje.if(zapiszdane2()){ if(zapiszdane3()){ if(zapiszdane4()){ echo 'wszystko ok!'; }else{ die('blad'); } }else{ die('blad'); } }else{ die('blad'); } }else{ die('blad'); } Cytat . Gorzej jak rzuci się coś nieprzewidzianego, co nie podpadnie pod system logowania błędów. Pod system logowania błędów wchodzi każdy błąd.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat kurcze.... to ze nie uzywam wyjątków nie znaczy ze piszę tak jak tu pokazałeś. Nie to miałem na myśli. Po prostu takie skrajne sytuacje wymagają odpowiedniej kontroli. Czasem zachodzi potrzeba wykonywania paru operacji ciurkiem, takiej pseudo-transakcji po stronie skryptu i zamiast klepać kilka(naście?) ifów lepiej wszystko oprzeć o wyjątki. Cytat Jak widze taki kod to też załamki dostaje. Uwierz, często coś takiego widuję. ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Uwierz, często coś takiego widuję Ale to jest wina programisty a nie techniki. Owszem, wyjątki mogą zmniejszyć ryzyko takich kodów ale kiepski programista i na wyjątkach ci zrobi taką kaszane ze wymiękniesz.Miałem sporą styczność z wyjątkami w javie. być może miałem pecha bo musiałem korzystać z libów napisanych poprostu "cudnie" i niesamowicie się zraziłem do wyjątków. Nie mówię że wyjątki są be. Mówię jedynie by nie pisać: Cytat // tu powinienes dostac ku***cy bo to ma się dla skrajnych przypadków. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
![]() 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
![]() 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".
-------------------- Nie lubię jednorożców.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 04:44 |