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
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Oczywiście tworzenie własnych wyjątków jest wskazane jaknajbardziej. Nie pisałem rzecz jasna, by tworzyć milion kodów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) dla klasy Exception, tylko jakoś to rozłożyc pomiędzy własne rozszerznie - trzeba znależć złoty środek. Ja na przykład staram się łączyć klasy w grupy (tzw paczki/package), dajmy na to klasa Image(). Służy do manipulowania zdjęciami (rotacja, skalowanie itp.) i posiada kilka zdefiniowanych kodów błędów (dałem pierwsze 5):
  1. <?php
  2. define('IMAGE_READ_ERROR', 0);
  3. define('IMAGE_WRITE_ERROR', 1);
  4. define('IMAGE_OUTPUT_ERROR', 2);
  5. define('IMAGE_IMAGETYPE_ERROR', 3);
  6. define('IMAGE_TRANSFORMATION_ERROR', 4);
  7. ?>

Następnie stworzyłem klasę BatchImage (masowa transformacja zdjęć) i np nie widzę powodu czemu ta klasa miała, by wyrzucać wyjątek BatchImageException, skoro nadal wszystko kręci się wokół manipulacji na zdjęciach. BatchImage również rzuca ImageException, ale kontekstu mogę się dowiedzieć z kodu (np. define('BATCHIMAGE_TRANSFORMATION_ERROR', 12);). Jest to moim zdaniem bardziej naturalne i elastyczne - moge zareagować na poszczególne błędy,a resztę olać.

Ten post edytował LBO 7.06.2006, 16:56:31
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: 17.10.2025 - 16:35