[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