Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> throw new Exception, czy potrzebne jest tutaj try catch?
Aztech
post 6.12.2005, 18:10:11
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Jeszcze jedno pytanko, tym razem dotydczące wyłapywania błędów. Chodzi mi konkretnie o funkcję setName() oraz validateName() w poniższym przykładzie. Czy podczas wywołania validateName() powinienem ująć wywołanie tej metody w blok try catch, czy jest to niekonieczne, błąd z validateName (jeśli $value będzie niepoprawne) zostanie wyświetlony przechwycony?

  1. <?php
  2.  
  3.  
  4.  
  5. class UserException extends Exception {};
  6. class IllegalDataException extends Exception {};
  7.  
  8. class TUser {
  9. /*
  10. pola prywatne
  11. ...
  12. metody
  13. */
  14.  
  15. public function validateName($name) {
  16. // validate if name is correct, name have 2 words
  17. // with space beetween of them
  18. // begins with uppercase
  19. if (!ereg("^[A-z](a-zA-Z/-)*( A-Za-z/-)*",$name))
  20. throw new IllegalDataException("Incorect name: $name.");
  21. }
  22.  
  23. public function setName($value="") {
  24. if (empty($value))
  25. throw new IllegalDataException("Name not set.");
  26. elseif ($this->validateName($value))
  27. $this->name = $value;
  28. }
  29.  
  30. }
  31.  
  32.  
  33. ?>
Go to the top of the page
+Quote Post
mike
post 6.12.2005, 18:18:40
Post #2





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

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


Nie, tutaj nie jest potrzebne.

Ale tam gdzie bedziesz używał tych metod, tej klasy już będzie potrzebne.

Np.:

  1. <?php
  2.  
  3. $objUser = new TUser();
  4.  
  5. try
  6. {
  7.  
  8. $objUser->validateName( 'niepoprawna nazwa usera' );
  9.  
  10. }
  11. catch( IllegalDataException $objException )
  12. {
  13.  
  14. echo $objException->getMessage();
  15.  
  16. }
  17.  
  18.  
  19. ?>


Poczytaj php.net :: Exceptions żeby wiedzieć gdzie i jak łapać wyjątki.
Go to the top of the page
+Quote Post
Aztech
post 6.12.2005, 18:29:09
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Czytałem artykuł na www.zend.com
całkiem niezły, ale nie do końca byłem po nim pewien czy jest właśnie konieczne stosowanie tam try catch. Dzięki za nowego linka i szybką reakcję.

EOT
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 Wersja Lo-Fi Aktualny czas: 14.07.2025 - 23:19