Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Exception, problem z obsługą błędów
Fixus
post
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
Jarod
post
Post #2





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

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


Cytat(Fixus @ 20.02.2008, 16:36:59 ) *
(...)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 ?

Jeśli chcesz obsługiwać wyjątki to, wyjątek musi zostać zgłoszony w bloku try i musisz taki wyjątek przechwycić (catch). Nie da się inaczej. Ja w klasach wyrzucam tylko wyjątki, a w głównym kontrolerze (index.php) umieściłem try-catch.
Pzdr
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: 16.10.2025 - 00:45