[Python] Info su cancellazione traceback
Matteo Boscolo
matteo.boscolo a boscolini.eu
Sab 19 Nov 2022 08:45:00 CET
Buongiorno a tutti,
vorrei cancellare il traceback di python e mostrare solo il mio raise,
questa cosa mi serve per evitare che lo stack dell'errore venga visto in
console.
ho provato con questo decoratore
def avoid_traceback(message=''):
''' call a function a number of times '''
def decorate(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
try:
result = fn(*args, **kwargs)
except Exception as ex:
if message:
raise Exception(message)
raise Exception("Error on method %s" % fn.__name__)
return result
return wrapper
return decorate
che funziona, ma il traceback resta attivo, nel senso che se metto
traceback.print_exc()
mi vedo tutto lo stack dell'errore:
Traceback (most recent call last):
File "/media/OneTDisk/workspace/test.py", line 133, in wrapper
result = fn(*args, **kwargs)
File "/media/OneTDisk/workspace/test.py", line 218, in rise
raise Exception("rise")
Exception: rise
potete provare con questo esempietto qua:
class A(object):
def __init__(self):
pass
@avoid_traceback("errore generico")#
def rise1(self):
return self.rise()
@avoid_traceback("errore generico")#
def rise(self):
raise Exception("rise")
a=A()
a.rise1()
traceback.print_exc()
ho trovato in rete
https://www.programcreek.com/python/example/119512/traceback.clear_frames
ma sembra che non funzioni..
qualche idea ?
grazie mille
Matteo
Maggiori informazioni sulla lista
Python