Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Error Handler
Vomit
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


Mam kilka pytan w zwiazku z obsluga bledów i wyjatkami.

Error Handler słuzy tylko do pokazania (w jakis ładny sposob bledu) czy ma jakies szersze zastosowanie? np. tworzenie logu czy powiadamianie o bledzie administratora?

Error Handler jest w pewien sposob zwiazany z wyjatkami czy sa to niezaleznie, dwie rozne od siebie sprawy? Jaka role pełni Error Handler gdy korzystamy z wyjatków (przeciez jesli bedziemy korzystac z tych dwoch rzeczy na raz otrzymamy dwie informacje o bledzie?)

Czy da sie wyrzucic wyjatek nie korzystajac z try/catch?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Cytat
Error Handler słuzy tylko do pokazania (w jakis ładny sposob bledu) czy ma jakies szersze zastosowanie? np. tworzenie logu czy powiadamianie o bledzie administratora?

jak przechwycisz blad mozesz z nim zrobic wszystko. wyslac maila, zapisac do pliku, wyslac na gg admina ;]
Go to the top of the page
+Quote Post
Vomit
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


A na inne pytania znacie odpowiedzi?
Go to the top of the page
+Quote Post
Levabul
post
Post #4





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


Co do "Czy da sie wyrzucic wyjatek nie korzystajac z try/catch?"

Poczytaj o set_error_handler
Go to the top of the page
+Quote Post
Vomit
post
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


Po przeczytanu tego moge wywnioskowac, ze da sie wyrzuc wyjatek za pomoca trigger_error() ? Nic nie bylo napisane o throw new Exception() wiec podejrzewam, ze bez try/catch throw new Exception() nie da sie?
Go to the top of the page
+Quote Post
seaquest
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 790
Pomógł: 7
Dołączył: 6.02.2003
Skąd: Polska

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


Z tego co pamiętam się da, tylko w miejscu w którym go wyrzucasz aplikacja przerywa działanie i zostaje wywułany tylko kod konstruktora tego wyjątka oraz metody __destruct() wszystkich obiektów.
Go to the top of the page
+Quote Post
Vomit
post
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


A to?

Cytat
Error Handler jest w pewien sposob zwiazany z wyjatkami czy sa to niezaleznie, dwie rozne od siebie sprawy? Jaka role pełni Error Handler gdy korzystamy z wyjatków (przeciez jesli bedziemy korzystac z tych dwoch rzeczy na raz otrzymamy dwie informacje o bledzie?)
Go to the top of the page
+Quote Post
_Mateo
post
Post #8





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.03.2005
Skąd: Jaworzno

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


Nie mozna otrzymać dwóch informacji o bledzie, bo jesli np. throw bedzie w linii 10, to odrazu przestanie wykonywac reszte z try{} i przewjdzie do catch. I na odwrot. Jesli dasz trigger error i do tego blad krytyczny wczesniej niz throw, to poprostui zakonczy caly skrypt.

A jesli w try{} uzyjesz innego komunikatu trigger_error() (np notice albo warn) to poprostu sie wyswietli komunikat, a reszta bedzie szla dalej. nie wiem czy to o to Ci chodziło, ale... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Vomit
post
Post #9





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


Z jednej strony twoja odpowiedz mnie satysfakcjonuje, jednak moj problem polega na tym, ze nie rozumiem zaleznosci miedzy Error Handlerem i trigger_error() a Wyjatkami i try/catch.

Z tego co sam sobie moge wywnioskowac, wydaje mi sie ze nie powinno sie korzystac z wyjatkow i error handlera jednoczesnie, bo bledy i tak sa wyrzucane przez trigger_error a gdy skrypt nie zakonczy dzialania to jeszcze raz tym razem jako przechwycone przez catch?

Zreszta nie wiem za bardzo kiedy wyrzucac wyjatki ... i co do takiego wyjatki sie klasyfikuje ... czytalem o tym w manualu, ale niestety dalej mam metlikw glowie.
Go to the top of the page
+Quote Post
_Mateo
post
Post #10





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.03.2005
Skąd: Jaworzno

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


Mylisz teraz pojęcia. Error handler to jest funkcja obslugujaca trigger_error(). Ona przejmuje wszystkie błedy ze skryptu wyswietlajac je tak, jak okreslisz w handlerze. Pozatym ERROR_REPORTING moze miec wartosc 0, wiec wowczas nie wyswietli sie komunikat bledu. Wyjątki są uzywane do kontrolowania pracy aplikacji. Jeśli coś nie pójdzie po myśli aplikacji, to wyrzucasz wyjątek.
Go to the top of the page
+Quote Post
Vomit
post
Post #11





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


Czyli rozumiem, ze te dwie rzeczy nie sa ze soba zwiazane w zaden sposob?
Wyjatki sa to bledy, a raczej oznaka ze jakas czynnosc zaplanowana przez programiste nie powiodla sie?

Czyli cos w stylu:

  1. <?php
  2. $q = mysql_query('');
  3. if ( !$q )
  4. {
  5. die('Zapytanie nie zostalo wykonane!'); // zamiast tego throw new Exception('Zapytanie nie zostalo wykonane!');
  6. }
  7. ?>


Dobrze rozumiem?
Go to the top of the page
+Quote Post
_Mateo
post
Post #12





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.03.2005
Skąd: Jaworzno

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


die() nie ma nic wspolnego z tymi dwoma rzeczami. Die to tylko funkcja, ktora konczy prace skryptu. A triger_error wyrzuca błąd wyglądający z zewnątrz jak ten z php. To czy sie wyswietli zalezy od ustawienia ERROR_REPORTNIG. A wyjątki ułatwiają zarządzanie przepływem aplikacji. Jeśli np coś nie pójdzie po myśli programisty, wówczas wyrzuca się wyjątek i zakańcza prace.
Go to the top of the page
+Quote Post
Vomit
post
Post #13





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


no wiem, ze die() nie ma z tym nic wspolnego, chodzi mi o przyklad, czy dobrze to rozumiem?
nie jestem pewien kiedy wywoływac wyjatki:
i pytam czy wyjatki wyrzuca sie np. w takiej sytuacji:
  1. <?php
  2. $q = mysql_query('');
  3. if ( !$q )
  4. {
  5. throw new Exception('Zapytanie nie zostalo wykonane!');
  6. }
  7. ?>
Go to the top of the page
+Quote Post
_Mateo
post
Post #14





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 4.03.2005
Skąd: Jaworzno

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


Cos takiego. Tylko pamiętaj, że throw mozesz tylko dac w try{}. Jak w try{} wystapi wyjatek, to mozesz z nim zrobic wszystko w bloku catch.
Go to the top of the page
+Quote Post
Rafiki
post
Post #15





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 29.12.2005
Skąd: Z krzaków

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


Mam pytanie, czy znacie moze jakis art ktory obszernie w calosci traktuje o wyjatkach i obludze bledow, gdy czytam to tak wszystko czastkowo nie moge tego pojac juz jak praktycznie wykorzystac i w sumie co do czego sluzy throw new expection a error hanlder , trigiger czy inne :/
Go to the top of the page
+Quote Post
athabus
post
Post #16





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Artykułu nie pamiętam ale na pewno bez problemu coś w sieci da się znaleźć.

Dość przyzwoicie opisano wyjątki w tej książce: http://helion.pl/ksiazki/phmsv3.htm jeśli mnie pamięć nie myli.
Książka jest droga ale IMHO warta swojej ceny.
Go to the top of the page
+Quote Post
NuLL
post
Post #17





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


http://www.zend.com/php5/articles/php5-exceptions.php
Go to the top of the page
+Quote Post

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: 22.08.2025 - 13:11