Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyjatki
AcidBurnt
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

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


Witam

catch try itp, probuje tym jakas zawladnac tylko chyba nie za bardzo rozumiem idei (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

powiedzmy mam taki kodziek

  1. <?php
  2. foreach($a as $b){
  3. echo $b;
  4. }
  5. ?>


no i w sumie wiadomo ze $a musi byc tablica inaczej error:

Warning: Invalid argument supplied for foreach() in D:\WWW\nieruchomosci\admin\test.php on line 5

no wiec jak wylapac takiego wyjatka?

musze dac np cos takiego:
  1. <?php
  2. try {
  3. if(!is_array($a))
  4.  throw new Exception('$a musi byc tablica');
  5. else{
  6. foreach($a as $b){
  7. echo $b;
  8. } 
  9. }
  10.  
  11.  
  12. } catch (Exception $e) {
  13.  echo 'Caught exception: ', $e->getMessage(), "n";
  14. }
  15. ?>


przyklad blogu try catch z php.net

tak to trzeba robic czy mozna nie wiem jakaos latwiej ;p
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Diwi
post
Post #2





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

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


Wyjątek zawsze musisz wyrzucić lecz jeżeli nie chcesz pisać cały czas w bloku catch:
echo ...

możesz stworzyć sobie klase osłonową która dziedziczy po Exception, przykład klasy która u mnie odpowiada za wyrzucanie wątków krytycznych i odrazu wyświetlanie ich na ekran użytkownikowi:

  1. <?php
  2. class SystemException extends Exception 
  3. {
  4. public function __construct( $strErrorMessage )
  5. {
  6. parent::__construct( $strErrorMessage );
  7.  
  8. echo 'Wystąpił błąd krytyczny: '.$strErrorMessage.'<br /><br />';
  9.  
  10. foreach( parent::getTrace() as $arrTrace ) 
  11. {
  12. echo 'Plik: <strong>'.$arrTrace['file'].'</strong><br />';
  13. echo 'Linia: <strong>'.$arrTrace['line'].'</strong><br />';
  14. echo 'Klasa: <strong>'.$arrTrace['class'].'</strong><br />';
  15. echo 'Funkcja: <strong>'.$arrTrace['function'].'</strong><br />';
  16. echo 'Argumenty funkcji: ';
  17.  
  18.  
  19. echo '<ul>';
  20. foreach( $arrTrace['args'] as $strArgument )
  21. {
  22. echo '<li>'.$strArgument.'</li>';
  23. }
  24. echo '</ul>';
  25.  
  26. echo '<br /><br />';
  27. }
  28. }
  29. }
  30. ?>


Później jeżeli będziesz potrzebował stworzyć więcej typów wyjątków (tak aby odpowiedni wyjątek był rzucany w danej sytuacji) możesz po prostu dziedziczyć po SystemException.

Przykład:
  1. <?php
  2. class IsNotArrayException extends SystemException {}
  3. ?>


Pozdrawiam

Ten post edytował Diwi 6.06.2006, 15:27:02
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 04:20