Avatar
tribal.cz
Redaktor
Avatar
tribal.cz:

ahoj mám problém s vyjímkami pravda je že je prakticky používám poprsevé doted sem použíal bud retur nebo echo pro vypis chyb ale v nasledujicim kodu mam vyjimku takto

try
            {
                if($_POST['password'] == $_POST['passwordAgain'])
                {
                        $this->saveNewUser($this->newUser->saveUser());
                }
                throw new UserException("Zadaná hesla se neshodují");
            }
                catch (UserException $e){
                        echo ('<span style="color: red;">' . nl2br($e->getMessage()) . '</span>');
                }

a vyjimka se mi ukáže i při správném běhu programu

 
Odpovědět 17.5.2014 14:29
Avatar
GreenMan
Redaktor
Avatar
Odpovídá na tribal.cz
GreenMan:

Kód ktorý vracia výnimku sa v tomto prípade spustí vždy. Výnimku vyhadzuj v prípade, že sa heslá nezhodujú, teda cez else.

try
             {
                 if($_POST['password'] == $_POST['passwordAgain'])
                 {
                        $this->saveNewUser($this->newUser->saveUser());
                 } else {
                 throw new UserException("Zadaná hesla se neshodují");
                 }
             }
                catch (UserException $e){
                        echo ('<span style="color: red;">' . nl2br($e->getMessage()) . '</span>');
                }
Nahoru Odpovědět  +2 17.5.2014 14:38
Zelená zostane zelenou, aj keď na ňu vyleješ modrú. - Satik64
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Hm a nemá to vyvolání výjimky být v else?

if($_POST['password'] == $_POST['passwordAgain']){
    $this->saveNewUser($this->newUser->saveUser());
}else{
    throw new UserException("Zadaná hesla se neshodují");
}
Nahoru Odpovědět 17.5.2014 14:40
Chybami se člověk učí, běžte se učit jinam!
Avatar
tribal.cz
Redaktor
Avatar
Odpovídá na GreenMan
tribal.cz:

jo už je to ok díky

 
Nahoru Odpovědět 17.5.2014 14:49
Avatar
Martin Konečný (pavelco1998):

Udělal bych to spíše obráceně, tzn. testoval bych, zda se podmínka nesplnila a v tom případě vyhodit výjimku.

if ($_POST["password"] != $_POST["passwordAgain"]) {
    throw new Exception("hesla se neshodují");
}
if (strlen($_POST["password"]) < 5) {
    throw new Exception("heslo je krátké");
}

// vše OK
$this->saveNewUser(...);
 
Nahoru Odpovědět  +1 17.5.2014 14:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.