![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 0 Dołączył: 29.12.2005 Skąd: Z krzaków Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Stworzylem plik extends w ktorym mam:
nic wielkiego ... Procz tego mam klase do obslugi mysqla, z cacheowaniem i inne 'gadzety'. W klasie tej w niektorych miejscach generowane sa wyjatki min w konstruktorze ktory ma za zadanie wywolanie polaczenia z baza, gdy polaczenie sie nie powiedzie generowany jest wyjatek w taki sposob:
Niby wszystko ok... teraz mam index.php
Dane przy wywolaniu klasy sa specjalnie zle podane aby zostal wychwycony wyjatek... ale wyjatek przechwyca catch z Exception a nie z system_Exception mimo ze w klasie do obslugi sql wywolywalem system_Exceptions. System Exceptions ma sie roznic tym od zwyklego wyjatku ze ma wywalac bledy w 'jadrze' systemu na surowo na bialym tle z dokladnym opisem, linia bledu itd itd... zas zwykly wyjatek ma wyswietlac sam opis ktory ma sie wyswietlac w jakiejs okreslonej szacie graficznej strony, ale niestety nie dziala gdyz system_Exceptions pokazuje sie tak jak powinien sie pokazywac zwykly Exceptions ( bynajmiej tak mi sie wydaje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Prosze o pomoc i z gory dziekuje. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Kwestia dziedziczenia.
Klasa system_Exception jest jednocześnie specjalizacją klasy Exception i jako taki jej obiekt jest przechwytywany jako pierwszy. Po prostu przechwytywanie Exception daj do ostatniego catch i będzie działać, Pozdrawiam. Ten post edytował Cysiaczek 14.08.2006, 19:10:20 |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Podstawy wyjątków, warto żebyś przeczytał... patrząc na to co piszesz.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 0 Dołączył: 29.12.2005 Skąd: Z krzaków Ostrzeżenie: (0%) ![]() ![]() |
Przeczytałem juz wczesniej, ale nie zwróciłem uwagi piszac skrypt ze Exception w tym przypadku musi byc na koncu.
Widzac co piszesz... ahah (IMG:http://forum.php.pl/style_emoticons/default/thumbsupsmileyanim.gif) Ten post edytował Rafiki 15.08.2006, 11:46:02 |
|
|
![]()
Post
#6
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Exception zawsze musi byc na samym końcu
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
@hwao - nie, nie musi być na końcu. Jeśli chcesz po prostu przechwycić błędy, a nie interesuje Cię jaki to błąd, to możesz śmiało 'przekleić' Exception na początek. (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)
Pozdrawiam. |
|
|
![]()
Post
#8
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
@hwao - nie, nie musi być na końcu. Jeśli chcesz po prostu przechwycić błędy, a nie interesuje Cię jaki to błąd, to możesz śmiało 'przekleić' Exception na początek. (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) Pozdrawiam. To wtedy jaki jest sens pisanie pozostałych (tych pod exception?)? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
No w takim układzie to żaden (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Pytanie jednak brzmi: co zrobić, gdy chcemy w jednakowy sposób zareagowac na jakiekolwiek wyjatki?
Co prawda przydatne raczej tylko przy testach...ale można (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Pozdrawiam |
|
|
![]()
Post
#10
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
W takiej sytuacji to też kiepskie wyjście.
Lepiej zachować normalną kolejnośc bloków catch, czyli od najszczegółowszego do Exception. W takiej sytuacji kiedy chcemy na każdy wyjątek zareagować tak samo, to możesz dpisać troche kodu do klsy po której wszystkie dziedziczą. Nie będziesz musiał zmieniać wszystkich try...catch w swojej aplikacji. |
|
|
![]()
Post
#11
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Manual: php przeglada kolejno wszystkie catch'e i po napotkaniu pierwszego z typem wyjatku bedacym klasa/nad-klasa aktualnie obslugiwanego wyjatku wchodzi do tego catch'a{}.
Cysiaczek: juz lepiej to usun, bo wyglada jak bys nie przejmowal sie wystepujacymi wyjatkami. W tym przypadku wystarczy jeden catch z Exception
---------- edit: mike_mech Cytat W takiej sytuacji kiedy chcemy na każdy wyjątek zareagować tak samo, to możesz dpisać troche kodu do klsy po której wszystkie dziedziczą. Reakcja na wyjatek jest jego obsluga w catch'u a nie wewnatrz obiektu wyjatku :/ |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
:roll2: Ja tylko pokazuję, że można... nie mówię, że to ma jakieś uzasadnienie projektowe (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Zdrówka. (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) Ten post edytował Cysiaczek 15.08.2006, 15:13:05 |
|
|
![]()
Post
#13
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
---------- edit: mike_mech Reakcja na wyjatek jest jego obsluga w catch'u a nie wewnatrz obiektu wyjatku :/ Tak wiem, ale można zrobić:
Hmm, ale takie teoretyzowanie już nie za daleko prowadzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#14
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ja zrozumialem ze chodzilo ci o zajecie sie wyjatkiem przy jego tworzeniu, w konstruktorze tegoz wyjatku (z wywolaniem parent::__construct()) -- zapisaniem go do logu, itp.
|
|
|
![]()
Post
#15
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 20:37 |