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