[python] Re: Zdrojový kód z databáze a identifikace chyby

Xeleos xeleos na gmail.com
Pondělí Leden 23 10:25:39 CET 2006


Díky moc! Přesně to jsem potřeboval.
Radek Kaňovský wrote:
> On Sun, Jan 22, 2006 at 12:59:30PM -0800, Xeleos wrote:
>
> > Ahoj,
> >
> > potřebuji uchovávat zdrojový kód v databázi.  Pouštím ho funkcí
> > exec. Když ale dojde k chybě během kódu, tak ve výpisu chyby je:
> > File "", line 39, in  ?
> > Zajímalo by mě, zda jde zdrojový kód nějak identifikovat, abych si
> > mohl nastavit vlastní název (číslo řádky v tabulce), který bych
> > pak mohl při odchytávání chyby zpracovat?
> > Moc děkuji za pomoc
>
> Tohle jde celkem snadno, pouze se musi zdroj zkompilovat:
>
>     >>> src = '''print 1
>     ... 1/0
>     ... print 2
>     ... '''
>     >>> code = compile(src, '<tabulka:klic>', 'exec')
>     >>> exec code
>     1
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in ?
>       File "<tabulka:klic>", line 2, in ?
>     ZeroDivisionError: integer division or modulo by zero
>
> Zde je videt, ze se neco stalo v zaznamu s primarnim klicem "klic" v
> tabulce "tabulka". Pokud byste chtel vypsat i ten konkretni radek
> databazoveho zaznamu, na kterem se chyba vyskytla (tj. "1/0"),
> tak to pujde mozna nejak pres vlastni funkci nastavenou do sys.excepthook.
> Ted se misto "1/0" zobrazuje otaznik, protoze standardni exception
> handler umi hledat zdrojove kody pouze v souborech.
> 
> Zdravi
> 
> Radek Kaňovský




Další informace o konferenci Python