异常情况下执行的操作的修饰程序
failureaction的Python项目详细描述
此包旨在提供执行自定义操作的装饰器。 如有例外。让我们看一个例子:
首先我们需要一个有一些方法的对象。我们用这些方法装饰 printonfailure-decorator。这个简单的示例decorator打印一个给定的 异常情况下的消息。
>>> from failureaction import ConflictError >>> from failureaction import PrintOnFailure >>> class TestOb(object): ... ... @PrintOnFailure(msg='Some numeric calculation went wrong!') ... def divide(self, a, b): ... return a/b ... ... @PrintOnFailure() ... def doraise(self): ... raise ConflictError
我们有两种方法。一分为二 另一个则引发了自定义的冲突错误。现在让我们看看 操作:
>>> ob = TestOb() >>> ob.divide(4, 2) 2>>> ob.divide(42, 0) Some numeric calculation went wrong!>>> ob.doraise() Traceback (most recent call last): ... ConflictError
模块提供的actionfailure装饰器旨在 由自定义类重写。像这样:
>>> from failureaction import ActionOnFailure >>> class MailOnFailure(ActionOnFailure): ... ... def __init__(self, subject): ... self.subject = subject ... ... def _doaction(self, context, e): ... """ send a mail, if an exception was raised """ ... print "Subject:", self.subject ... print e>>> class TestOb2(object): ... ... @MailOnFailure(subject='An error occured') ... def critical(self): ... import _not_existent_hopefully_>>> ob2 = TestOb2() >>> ob2.critical() Subject: An error occured No module named _not_existent_hopefully_