Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Błędy w klasach
Babcia@Stefa
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Witam, jak lepiej obsługiwać błędy z poziomu klasy?

trigger_error()" title="Zobacz w manualu PHP" target="_manual
Czy wyjątki?
  1. <?php
  2. throw new Exception('Nazwa klasy :: funkcja() : Jakis blad', 1);
  3. ?>


Do tej pory kożystałem z wyjątków, ale coś mnie podkusiło aby się zapytać co do tego trigger_error()" title="Zobacz w manualu PHP" target="_manual (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

@edit
Zastanawiam się nad tym dlaczego iż wyjątki nie są aż takie wygodne...
Gdy ktoś ma error_reporting wyłączony to obsługuje klasę jak zwykłe funkcje z jądra PHP, a przy obsłudze wyjątków trzeba try {} i catch{} za każdym razem stosować przy tworzeniu obiektów.

Dziękuję, Babcia@Stefa

Ten post edytował Babcia@Stefa 27.06.2008, 20:38:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wrzasq
post
Post #2





Grupa: Zarejestrowani
Postów: 206
Pomógł: 18
Dołączył: 6.03.2006
Skąd: Szczecin

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


oczywiscie polecam rozwiazanie polegajace na wyjatkach. niewatpliwie jest ona bardziej elastyczne (ze wzgledu na mozliwosc chociazby zagniezdzenia blokow try{} catch{} wiec mozesz umiescic swoj starszy kod wewnatrz takiego bloku i nie bedzie problemu) a jednoczescie umozwiliajace dosc dobra kontrole nad przebiegiem wydarzen (jak widac na poszczegolnych juz przytoczonych przykladach mozna dosc szczegolowo kontrolowac zdarzenia zaleznie od tego, jaki blad wystapi). najwazniejsza przewaga wyjatkow nad trigger_error() jest to, ze jest to kontrukcja jezykowa (jak takze widac).

ze swojej strony moge dodac klase wyjatkow, ktora w nieznaczny sposob modyfikuje zachowanie klasy bazowej, a umozliwia proste rozroznienie wyjatkow tej samej rodziny po konkretnych przypadkach (kodach bledow):

  1. <?php
  2.  
  3. /**#@+
  4.  * @version 0.1.2
  5.  * @since 0.0.6
  6.  */
  7.  
  8. /**
  9.  * @package POT
  10.  * @author Wrzasq <wrzasq@gmail.com>
  11.  * @copyright 2007 (C) by Wrzasq
  12.  * @license <a href=\"http://www.gnu.org/licenses/lgpl-3.0.txt\" target=\"_blank\">http://www.gnu.org/licenses/lgpl-3.0.txt</a> GNU Lesser General Public License, Version 3
  13.  */
  14.  
  15. /**
  16.  * Generic exception class for error codes.
  17.  * 
  18.  * @package POT
  19.  */
  20. class E_OTS_ErrorCode extends Exception
  21. {
  22. /**
  23.  * Sets error code.
  24.  * 
  25.  * @param int $code Error code.
  26.  * @param string $message Optional error message.
  27.  */
  28. public function __construct($code, $message = '')
  29. {
  30. parent::__construct($message, $code);
  31. }
  32. }
  33.  
  34. /**#@-*/
  35.  
  36. ?>

http://opentibia.svn.sourceforge.net/viewv...S_ErrorCode.php

oczywiscie roznica jest nieznaczna, ale z poziomu kodu o wiele wygodniej jest obslugiwac kody bledow, niz ich wiadomosci.
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 18:03