| Autor | Zpráva | ||
|---|---|---|---|
| kajaman Profil |
#1 · Zasláno: 14. 4. 2008, 12:51:36
Ahoj, prosím o radu. Mám jednu třídu, která volá metodu jiné třídy. Ve volané třídě se generují jakási data, např. z db, a vznikne tam nějaká výjimka. Tu bych měl odchytit bezprostředně za try blokem a ošetřit. Jak to mám udělat, když potřebuji tu hlášku (např. "špatné přihlašovací údaje") až v té volající třídě, ne v té volané.
|
||
| Srigi Profil * |
#2 · Zasláno: 14. 4. 2008, 13:37:50
class foo
{
pokus = new bar();
try {
pokus->getDbData();
} catch (Exception $e) {
$message = $e;
}
}
class bar
{
public function getDbData()
{
...
...
...
if (nieco_sa_pokaslalo)
throw new Exception("hlaska");
}
}
|
||
| srigi Profil |
#3 · Zasláno: 14. 4. 2008, 13:42:43
Nie je to teda syntakticky uplne presne, ale principialne by to malo byt OK. Oprav si teda iba tie chyby syntaxe
pokus = new bar(); $pokus = new bar(); $message = $e; $message = $e->getMessage |
||
| kajaman Profil |
#4 · Zasláno: 14. 4. 2008, 13:47:48
děkuju, takže vidím, že catch nemusí jít bezprostředně za try blokem... kdyby třída "bar" volala další třídu (tj. už třetí), a chyba vznikla až v té třetí, bude to takhle?
class foo
{
pokus = new foo2();
try {
pokus->nactiData();
} catch (Exception $e) {
$message = $e;
}
}
class foo2 {
public function nactiData(){
$bar = new bar();
try{
$bar->getDbData();
}catch (Exception $e){
throw new Exception $e;
}
}
}
class bar
{
public function getDbData()
{
...
...
...
if (nieco_sa_pokaslalo)
throw new Exception("hlaska");
}
}
|
||
| panhuhu Profil |
#5 · Zasláno: 14. 4. 2008, 13:57:45
try{
$bar->getDbData();
}catch (Exception $e){
throw new Exception $e;
} |
||
| kajaman Profil |
#6 · Zasláno: 14. 4. 2008, 13:58:44
tak to je ovšem úplně super :)
všem díky za radu! K. |
||
| srigi Profil |
#7 · Zasláno: 14. 4. 2008, 14:42:45
Tak tak, vinimku mozes vyhodit lubovolne hlboko v kode a chytit si ju az na samom vrchu.
|
||
|
Časová prodleva: 18 let
|
|||
0