Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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_Import - Fatal编程技术网

Python 捕获导入模块引发的本地异常类型

Python 捕获导入模块引发的本地异常类型,python,exception,import,Python,Exception,Import,我有一个定义泛型类的主模块,还有一个定义子类的第二个模块 当以脚本形式运行主模块时,我希望使用第二个模块中的子类。但是,我无法捕获在主模块中声明的异常 #a.py 类CustomException(异常):传递 A类: def raise_异常(自身): 引发自定义异常() 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': 进口b 尝试: b、 b().raise_异常() 除CustomException外,如e: 打印('捕获为CustomExcepti

我有一个定义泛型类的主模块,还有一个定义子类的第二个模块

当以脚本形式运行主模块时,我希望使用第二个模块中的子类。但是,我无法捕获在主模块中声明的异常

#a.py
类CustomException(异常):传递
A类:
def raise_异常(自身):
引发自定义异常()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
进口b
尝试:
b、 b().raise_异常()
除CustomException外,如e:
打印('捕获为CustomException')
例外情况除外,如e:
打印('捕获为一般异常')
印刷品(e类)
#输出:
#捕获为一般异常。
# 

问题在于,当第二个模块导入主类型时,会创建第二个
CustomException
类型

注意捕获的异常的
类型是
,而不是
。为了表明它们确实是不同的类型,以下内容都是错误的:

id(CustomException)==id(类型(e))
类型(e)==CustomException
isinstance(e,客户例外))
解决方案是不要通过两个不同的路径(本地名称和from
b.py
)导入相同的值(
CustomException
)。必须重写脚本以避免循环导入

# b.py
from a import A

class B(A):
    pass