Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Obsługa wyjątków
Jarod
post 13.01.2007, 00:07:16
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?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ikioloak
post 13.01.2007, 11:45:21
Post #2





Grupa: Zarejestrowani
Postów: 416
Pomógł: 0
Dołączył: 8.01.2004

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


J4r0d obiekt klasy Exception ma rowniez pole code, wiec mozesz rzucac wyjatkami o roznych kodach bledow i na podstawie tych kodow wykonywac odpowiednie operacje.

@envp, wyjatek to nienormalne dzialanie aplikacji, ale wcale nie jest powiedziane ze po wyrzuceniu jego ma sie ona zakonczyc. Nalezy ten blad obsluzyc, zalogowac, ale bardzo czesto aplikacja powinna dzialac dalej. Czesto nie sa to w koncu krytyczne wyjatki.

edit: poprawione, mylicie mi sie smile.gif

Ten post edytował ikioloak 13.01.2007, 12:49:34
Go to the top of the page
+Quote Post
Jarod
post 13.01.2007, 14:40:16
Post #3





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

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


Cytat(ikioloak @ 13.01.2007, 11:45:21 ) *
J4r0d obiekt klasy Exception ma rowniez pole code, wiec mozesz rzucac wyjatkami o roznych kodach bledow i na podstawie tych kodow wykonywac odpowiednie operacje.

Też nad tym myślałem.. Zastanawiam się jak je podzielić, np. kod wyjątu 0 -> błędy krytyczne i następuje przerwanie aplikacji.. Jaka jest Wasza propozycja? Może już to ktoś kiedyś opracował?

Cytat(ikioloak @ 13.01.2007, 11:45:21 ) *
edit: poprawione, mylicie mi sie smile.gif

Kto? winksmiley.jpg


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 20:21