Ich möchte eine Ausnahme haben, die immer eine E-Mail sendet, wenn sie ausgelöst wird. Was nun, plante ich diesen Code in __init()
zu setzen:Ausnahme, dass E-Mails bei der Erstellung des Stacks eine Ablaufverfolgung auslösen
import sendmail
import configparser
def MailException(BaseException):
"""
sends mail when initiated
"""
def __init__(self, message, config=None):
# Call the base class constructor with the parameters it needs
BaseException.__init__(message)
if config is None:
config = configparser.RawConfigParser()
config.read('mail.ini')
config = config['email']
text = 'exception stack trace + message'
sendmail.sendMail(text=text, config=config['email'], title='Alert')
ich ausdrücklich die E-Mail-Senden hier haben möchte, statt in jedem außer-Block I erstellen. Daher frage ich mich, wie man den Stack-Trace bekommt, der Code muss mit Python 2.7 kompatibel sein.
Das einzige, was ich finden konnte, war traceback
, aber das funktioniert anscheinend nur innerhalb der except:
Realm - oder gibt es eine Möglichkeit, es innerhalb der Exception-Klasse zu implementieren? Irgendwelche anderen Ideen?