Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Exception, problem z obsługą błędów
Fixus
post 20.02.2008, 16:36:59
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


Witam
Mam taki problemik...próbuje się nauczyć dobrze obsługiwać błędy przy wykorzystaniu klasy exception. Zacząłem od stworzenia własnej klasy
Kod
<?php
class contentException extends Exception
{
    // Redefine the exception so message isn't optional
    public function __construct($message, $code = 0) {
        // some code
  
        // make sure everything is assigned properly
        parent::__construct($message, $code);
    }

    // custom string representation of object
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
    }

}
?>


teraz mam taki kawałek kodu (fragment klasy addContent):
Kod
function setContent($content) {
        if(!is_string($content) || strlen($content) == 0) {
            throw new contentException('Niepoprawna treść!');
        } else {
            echo $content;
            $this->_content = $content;
        }
    }


I teraz mój problem polega na tym.
Jeżeli zrobie tak (w pliku test.php gdzie testuję powyższą klasę):
Kod
$content->setContent('');
to owszem wyświetli mi komunikat "niepoprawna treść" ale wyskoczy to jako fatal error wraz z ścieżką do pliku chyba że dam to w bloki try i catch. Jednakże dla mnie to się mija z celem bo musiałbym każdą metodę dawać w te bloki. Więcej czasu zajęło by mi pisanie samych try catch niż tworzenie aplikacji :/ czy można jakoś wymusić żeby kod który zrobiłem generował wyjątki tak jak należy bez okładania każdej metody blokami try i catch ?

Ten post edytował Fixus 20.02.2008, 16:40:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Fixus
post 20.02.2008, 17:00:11
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 9
Dołączył: 8.02.2006

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


yhm a czy dużym błędem jest jeśli metodę w klasie zakoduje tak:
Kod
function setContent($content) {
        try {
            if(!is_string($content) || strlen($content) == 0) {
                 throw new contentException('Niepoprawna treść news`a!');
            } else {
                $this->_content = $content;
            }
        } catch (contentException $ex) {
            echo $ex->getMessage();
        }    
    }


Bo coś chyba czytałem gdzieś, że nie powinno się dawać instrukcji echo w kodzie klasy
Go to the top of the page
+Quote Post
Jarod
post 20.02.2008, 17:03:36
Post #3





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

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


Cytat(Fixus @ 20.02.2008, 17:00:11 ) *
yhm a czy dużym błędem jest jeśli metodę w klasie zakoduje tak:
Kod
function setContent($content) {
        try {
            if(!is_string($content) || strlen($content) == 0) {
                 throw new contentException('Niepoprawna treść news`a!');
            } else {
                $this->_content = $content;
            }
        } catch (contentException $ex) {
            echo $ex->getMessage();
        }    
    }


Bo coś chyba czytałem gdzieś, że nie powinno się dawać instrukcji echo w kodzie klasy


To nie jest błąd bo skrypt działa. IMO nie powinieneś tego tak pisać.


--------------------
”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


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: 25.06.2025 - 05:17