Jak se hlasi chybove stavy?
Honza Pazdziora
adelton na informatics.muni.cz
Sobota Červen 7 18:20:36 MEST 2003
On Fri, Jun 06, 2003 at 10:44:50PM +0200, Ondrej Koala Vacha wrote:
> > pouziji na zjisteni povahy chyby metody err ci errstr na tom samem
> > objektu, na kterem ta puvodni metoda selhala:
> >
> > my $sth = $dbh->prepare($SQL) or die $dbh->errstr;
> >
> > Dalsi moznosti je byt javovsky a moderni :-) a nevracet undef, anybrz
> > vyjimku. Pri volani se to obali evalem a najde v $@.
>
> Jeste mozna vracet undef ve skalarnim a seznam/hash v seznamovem
> kontextu. Ma to vyhodu volnosti: kdyz chci, muzu se dozvedet vice.
Klasicky zpusob volani metod nebo funkci je ale
if (not $result = $obj->method) {
# zjisti, co bylo spatne
}
Tedy provede se normalni volani, a teprve kdyz selze, zjisti se
dodatecne informace o tom selhani. Pokud by se ty dodatecne informace
zjistovaly dalsim volanim te same metody
if (not $result = $obj->method) {
@error = $obj->method;
}
hrozi nebezpeci, ze napodruhe metoda jiz uspeje, s cimz ale hlavni tok
vypoctu nepocita.
A zavolat tu metodu zaroven ve skalarnim i seznamovem kontextu asi
nepujde.
Jak by vypadalo pouziti Vami navrzeneho postupu?
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Perl