[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