Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obsługa wyjątków
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Przykładowo mam taki pliczek:
  1. <?php
  2. try
  3. {
  4. $a = 0;
  5. $b = 1;
  6. $c = 2;
  7.  
  8. if ($a == 0) throw new Exception('Zmienna a musi być większa od zera');
  9. if ($b == 1) throw new Exception('Zmienna b musi być wynosić 0');
  10. if ($c == 2) throw new Exception('Zmienna c musi być większa od 10');
  11. }
  12. catch (Exception $e)
  13. {
  14. echo $e;
  15. }
  16. ?>


Zostanie przechwycony wyjątek i wyświetlony komunikat:
Cytat
Zmienna a musi być większa od zera


Teraz chciałbym zrobić coś takiego, że gdy zostanie przechwycony wyjątek 1 zostanie zapisany do pliku, gdy zostanie przechwycony wyjątek 2 natąpi zatrzymanie skryptu przez die() a gdy zostanie przechwycony wyjątek 3 sterowanie zostanie przekierowanie do pliku index2.php.

Zastanawiam się jak w jednym catch rozpoznawać rodzaje wyjątków tej samej klasy?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
q
post
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 4.04.2003
Skąd: Częstochowa/Wrocław

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


na początku rozszerz sobie klasę Exception na np. klasy ExceptionA, ExceptionB, ExceptionC gdzie w tych klasach zdefiniuj sobie metodę z tym co chcesz zrobić (zapis do pliku, wyjście itp.), a następnie łap odpowiednie typy wyjątków i wykonuj dla nich te właśnie metody.

  1. <?php
  2. try
  3. {
  4. $a = 0;
  5. $b = 1;
  6. $c = 2;
  7.  
  8. if ($a == 0) throw new ExceptionA('Zmienna a musi być większa od zera');
  9. if ($b == 1) throw new ExceptionB('Zmienna b musi być wynosić 0');
  10. if ($c == 2) throw new ExceptionC('Zmienna c musi być większa od 10');
  11. }
  12. catch (ExceptionA $e)
  13. {
  14. $e->twojaakcja();
  15. }
  16. catch (ExceptionB $e)
  17. {
  18. $e->twojaakcja();
  19. }
  20. catch (ExceptionC $e)
  21. {
  22. $e->twojaakcja();
  23. }
  24. catch (Exception $e)
  25. {
  26. echo $e;
  27. }
  28. ?>


Ten post edytował q 13.01.2007, 03:48:52
Go to the top of the page
+Quote Post

Posty w temacie
- J4r0d   Obsługa wyjątków   13.01.2007, 00:07:16
- - dr_bonzo   A czemu musza byc jednej klasy?   13.01.2007, 01:26:26
|- - J4r0d   Cytat(dr_bonzo @ 13.01.2007, 01:26:26...   13.01.2007, 11:29:49
- - q   na początku rozszerz sobie klasę Excepti...   13.01.2007, 03:48:21
- - envp   Przecież wyjątek to nienormalne zadziałanie aplika...   13.01.2007, 10:46:04
- - ikioloak   J4r0d obiekt klasy Exception ma rowniez pole code,...   13.01.2007, 11:45:21
|- - J4r0d   Cytat(ikioloak @ 13.01.2007, 11:45:21...   13.01.2007, 14:40:16
- - envp   nyss ?   13.01.2007, 12:41:45


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: 4.10.2025 - 04:31