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 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 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
|
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 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.
Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
|
Post
#8
|
|
|
Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz |
|
|
|
|
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
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 Pozdrawiam -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
|
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 :/ -------------------- Nie lubię jednorożców.
|
|
|
|
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
Zdrówka. Ten post edytował Cysiaczek 15.08.2006, 15:13:05 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
|
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 |
|
|
|
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.
-------------------- Nie lubię jednorożców.
|
|
|
|
Post
#15
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
|
|
|
|
![]() ![]() |
|
Aktualny czas: 20.08.2025 - 03:00 |