NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

exceptionEater.py (1277B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\eveexceptions\exceptionEater.py
      2 import logging
      3 
      4 class ExceptionEater(object):
      5 
      6     def __init__(self, message = '', channel = None):
      7         self.message = message
      8         self.channel = channel
      9 
     10     def __enter__(self):
     11         pass
     12 
     13     def __exit__(self, eType, eVal, tb):
     14         if eType is not None:
     15             if not issubclass(eType, Exception):
     16                 return False
     17             logger = None
     18             if self.channel:
     19                 logger = logging.getLogger(self.channel)
     20             else:
     21                 logger = logging.getLogger(__name__)
     22             logger.exception(self.message)
     23         return True
     24 
     25 
     26 class EatsExceptions(object):
     27 
     28     def __init__(self, message = None, channel = None):
     29         self.message = message
     30         self.channel = channel
     31 
     32     def __call__(self, func, *args, **kwargs):
     33 
     34         def wrapper(*args, **kwargs):
     35             if self.message is None:
     36                 message = 'Exception eaten in %s::%s' % (func.__module__, func.__name__)
     37             else:
     38                 message = self.message
     39             with ExceptionEater(message=message, channel=self.channel):
     40                 return func(*args, **kwargs)
     41 
     42         return wrapper