Python:扩展异常类
我试图做的是扩展基本的Python:扩展异常类,python,exception,Python,Exception,我试图做的是扩展基本的ImportError异常,因此无论何时调用它,它都会执行其他操作 import logging logging.basicConfig(filename="logs", level=logging.DEBUG) class ImportError(Exception): def __init__(self, message): Exception.__init__(self) self.message = message
ImportError
异常,因此无论何时调用它,它都会执行其他操作
import logging
logging.basicConfig(filename="logs", level=logging.DEBUG)
class ImportError(Exception):
def __init__(self, message):
Exception.__init__(self)
self.message = message
logging.warning(self.message)
import module
但是这行不通,有人能告诉我,我们怎样才能做到这一点
谢谢。
importorror
是一个内置的例外;导入失败不会在当前模块全局中查找异常
事实上,在Python2中,导入机制甚至没有在内置程序中寻找这一点;它使用异常的C等价物。您不能用自己的异常替换该异常
只需在python主脚本的顶层捕获异常:
try:
main() # or whatever function is your main entrypoint
except ImportError:
logging.exception('Import oopsie')
或者在异常处理程序中引发自定义异常。对于代码的未来维护者来说,这比将其他特性编入标准异常要清楚得多
在Python3.1及更高版本中,导入机制在很大程度上是使用更多的Python代码重新实现的,在那里,您可以通过使用和分配给
内置.ImportError
,来实现这一点,但是我要强烈地针对此类黑客行为提出建议。如果您这样做,请注意,importorror
除了messageohk之外,还传递了name
和path
关键字参数,因此这意味着我无法完成我正在尝试的操作,相反,我可以创建我的自定义异常
类,并在收到导入错误
??@abhishekgarg:没错。谢谢Martijn,我的脚本中还有很多尝试异常
,我是否可以像您在示例中展示的那样,对整个主函数执行尝试,而不是对几个不同的函数执行。@abhishekgarg:这取决于当您出现导入错误时应该发生什么;您是想在失败的import
语句之后立即继续,还是想结束您的程序?每当出现任何异常ImportError、IOError或任何其他异常时,我都想结束程序。我想做一些类似于try:main()的事情,除了异常,e:logging.error(e)