lea*_*eas 2 python error-handling exception python-3.x
我的代码发生了一些奇怪的事情,我有一个像这样的第一个函数:
def function1():
try : #1
#try to open a file
#read file
#return info variable from the file
except : #1
try : #2
#try to open a web page
#read web page
if directory1 not in directorylist :
#create directory1
#change working directory to directory1
else :
#change working directory to directory1
#write web page content in a file
#return info variable from the file
except : #2
try : #3
#try to open a second web page
#print error message 1
except : #3
#print error message 2
#set info variable to None
#return info variable
Run Code Online (Sandbox Code Playgroud)
所以这个函数在主程序中调用时可以完美运行,但是当我尝试在另一个函数 2 中调用 function1 时,try#2 和 except#2 都被执行了!原因创建目录 1 并打印错误消息 1,我的信息变量也等于无。
如何在第二个函数混乱中调用 function1 try 和 except 子句?
谢谢 !
小智 5
为什么令人惊讶?try
块应该执行,直到 someexception
被引发,然后该except
块将执行。那么为什么看起来两个块都被执行了,尽管有异常?
最可能的原因之一是try
块中的某些内容与引发的异常无关。这是else
阻塞的主要原因。如下重构您的代码可能会有所帮助
try:
# only statements that might raise exception
except SomeException:
# except block
else:
# everything you wanted do if no exception was raised
Run Code Online (Sandbox Code Playgroud)
如果它是一大块代码,使else
块变胖,事情可能会顺利进行。