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.


--------------------
Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN
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... 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


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post

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: 19.08.2025 - 04:12