Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: throw new Exception
Forum PHP.pl > Forum > PHP > Object-oriented programming
Aztech
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. ?>
mike
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.
Aztech
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.