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,客户例外))
解决方案是不要通过两个不同的路径(本地名称和fromb.py
)导入相同的值(CustomException
)。必须重写脚本以避免循环导入
# b.py
from a import A
class B(A):
pass