gpt4 book ai didi

python - 尝试 : except: not working

转载 作者:太空狗 更新时间:2023-10-29 18:28:22 26 4
gpt4 key购买 nike

所以我遇到了一个问题,try: except: 机制在 python 中似乎无法正常工作。

这是我的两个文件的内容。

pytest1.py
import pytest2

class MyError( Exception ):
def __init__( self, value ):
self.value = value

def __str__( self ):
return repr( self.value )

def func1():
raise MyError( 'This is an error' )

def func3():
pytest2.func2()

if __name__ == '__main__':
try:
func3()
except MyError, e:
print 'I should catch here.'
except:
print 'Why caught here?'

pytest2.py
from pytest1 import func1

def func2():
func1()

执行第一个文件会产生以下输出:

$ python pytest1.py
Why caught here?

基本上,异常没有被捕获。如果我打印出异常类型,它会打印为 <pytest1.MyError>而不仅仅是 <MyError> .我想这是一些奇怪的循环引用,但它似乎仍然有效。

最佳答案

主 python 程序始终作为模块 __main__ 导入。

当您导入 pytest2 时,它不会重用现有模块,因为最初导入的模块名称为 __main__ 而不是 pytest2。结果是 pytest1 运行多次,生成多个异常类。 __main__.MyErrorpytest1.MyError 你最终扔了一个并试图捕获另一个。

因此,不要尝试从其他模块导入您的主模块。

关于python - 尝试 : except: not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4952134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com