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ý
_______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
