[Tutor PyCZ] handlovani erroru
geon
geon na post.cz
Čtvrtek Červenec 21 07:37:41 CEST 2005
rajcze wrote:
>OK, to je super, ale ja bych to potreboval dostat do promenne - v
>dokumentaci je, ze se to da predavat do 'file objects' , je jedina
>cesta pres ulozeni do souboru, nacteni ze souboru? nebo existuje neco
>jako stream ze kteryho bych mohl cist jako ze souboru ? nebo to muzu
>primo z sys.stderr ?
>
>
Tak bud si vyvtoris nejakou tridu, ktera bude minimalne metodu write() a
budes si sam ridit ukládání do proměnné, nebo můžeš použít modul StringIO.
>navic, kdyz to handluju pomoci try - except, tak to stejne nefunguje,
>protoze data na stderr se smazou, a kdyz nepouzivam try - except, tak
>mi zase spadne program.
možná by se dalo:
import sys
soubor=file('chyby.txt','w')
sys.stderr=soubor
sys.stdout=soubor
try:
print "6"+4 # chyba
except Exception,x:
print Exception,'\n', x
soubor.close()
sys.stdout=sys.__stdout__
sys.stderr=sys.__stderr__
ale není tam vidět číslo řádky, kde se stala chyba. Tady pak musíš
použít modul traceback, je tam i pěkný příklad.
Případně debugger pdb, kde můžeš ladit post mortem...
Ahoj
P.S. Možná jsem s tím už trapný, pořád upozornovat na wiki, ale nedá mi
to ;-) : pokud se ti to povede, pls předej zkušenost do wiki. Tady to
brzy čas odplaví, tam to může ještě dlouho sloužit těm, kdo jdou za
tebou a budou mít určitě stejné problémy.
--
geon
Vyjímka je pravidlo. Rekurzivní.
Další informace o konferenci Tutor