Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:扩展异常类_Python_Exception - Fatal编程技术网

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
除了
message

ohk之外,还传递了
name
path
关键字参数,因此这意味着我无法完成我正在尝试的操作,相反,我可以创建我的自定义
异常
类,并在收到
导入错误
??@abhishekgarg:没错。谢谢Martijn,我的脚本中还有很多
尝试异常
,我是否可以像您在示例中展示的那样,对整个主函数执行
尝试,而不是对几个不同的函数执行
。@abhishekgarg:这取决于当您出现导入错误时应该发生什么;您是想在失败的
import
语句之后立即继续,还是想结束您的程序?每当出现任何异常ImportError、IOError或任何其他异常时,我都想结束程序。我想做一些类似于
try:main()的事情,除了异常,e:logging.error(e)