Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> try, catch w srodku klasy
Dex1987
post
Post #1





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


Witam, mozna zrobic tak obsluge bledow zeby funkcja __destruct wylapywala bledy i je wyswietlala? Chodzi o to aby try i catch byly w srodku klasy a nie przy wywolywaniu.

Pozdrawiam dex.

Ten post edytował Dex1987 13.01.2006, 15:45:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
dtb
post
Post #2





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


nie jestem pewny czy o to chodzi:
  1. <?php
  2. class jakasKlasa
  3. {
  4.  
  5.   public function jakasMetoda ()
  6.   {
  7.     try
  8.     {
  9.       throw new Exeception ('blebleble');
  10.     }
  11.   }
  12.  
  13.   public function __destruct ()
  14.   {
  15.     catch (Exeception $e)
  16.     {
  17.       echo $e->getMessage;
  18.     }
  19.   }
  20.  
  21. }
  22.  
  23. $test = new jakasKlasa;
  24. $test->jakasMetoda ();
  25. ?>


Ten post edytował dtb 13.01.2006, 16:10:40
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~dtb ale głupoty napisałeś (IMG:http://forum.php.pl/style_emoticons/default/laugh.gif)

1. Nie można stosować tylko catch; podobnie jak try
2. Poczytaj trochę o zasięgu.
3. W środku __destruct() możesz co najwyżej przechwycić błędy wyrzucone w środku. Albo je przepuścić i złapać je w konstrukcji try ... catch, k której się znajdzie usuwanie obiektu.

BTW: Nigdy nie wiedomo kiedy obiekt zostaje usunięty.
No chyba że każdy obiekt będziemy kasować za pomocą unset()
Go to the top of the page
+Quote Post
dtb
post
Post #4





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 5.11.2005
Skąd: Bieruń city

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


@mike_mech: ja nie podalem rozwiazania, tylko sie spytalem o co chodzi.

  1. <?php
  2. class jakasKlasa
  3. {
  4. private $wyjatek;
  5. public function jakasMetoda ()
  6. {
  7. try
  8. {
  9. throw new Exeception ('blebleble');
  10. }
  11. catch (Exeception $e)
  12. {
  13. $this->wyjatek = $e;
  14. }
  15. }
  16.  
  17. public function __destruct ()
  18. {
  19. echo $this->wyjatek->getMessage();
  20. }
  21.  
  22. }
  23.  
  24. $test = new jakasKlasa;
  25. $test->jakasMetoda ();
  26. ?>


Ten post edytował dtb 13.01.2006, 16:13:55
Go to the top of the page
+Quote Post
Dex1987
post
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


chodzi o cos podobnego jak napisal @dtb. @mike_mech wiem ze uzywa sie razem try i catch tylko chodzi mi jak to wywolac w destruktorze?
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


W destruktorze możesz przechwycić tylko to co wyrzuciło wyjątek w destruktorze.
czy to bezpośrednio:
  1. <?php
  2.  
  3. public function __destruct()
  4. {
  5. try
  6. {
  7. throw new Exception
  8. }
  9. catch( Exception $objException )
  10. {}
  11. }
  12.  
  13. ?>

... czy to "pośrednio":
  1. <?php
  2.  
  3. public function __destruct()
  4. {
  5. try
  6. {
  7. // wewnątrz someFunction() wyrzucany jest wyjątek,
  8. // ale nie jest przechwytywany, więc obowiązek przechwycenia przechodzi "wyżej"
  9. someFunction();
  10. }
  11. catch( Exception $objException )
  12. {}
  13. }
  14.  
  15. ?>



Nie ma takiej sytuacji (bo to chyba o tym mówisz?):
  1. <?php
  2.  
  3. $objObject = new Class();
  4.  
  5. $objObject->someFunction(); // funkcja wyrzuca wyjątek;
  6.  
  7. unset( $objObject ); // tutaj destruktor przechwytuje wyjątek wyrzucony przez someFunction()
  8.  
  9. ?>


Tak się po prostu nie da.
Mało tego, to jest niewykonalne w żadnym języku programowania.

Poczytaj: Rozdział 20. Exceptions a dowiesz się jak? i gdzie? łapać wyjątki.
Go to the top of the page
+Quote Post
Dex1987
post
Post #7





Grupa: Zarejestrowani
Postów: 246
Pomógł: 0
Dołączył: 28.09.2004

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


Trudno, musze się zadowolic tym co jest (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Dzieki.

Pozdrawiam.
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 - 16:29