我应该在 try-except 块中添加 else 语句来处理 return 语句吗?
Should I add an else statement to try-except block to handle the return statement?
我正在尝试比较列表中的项目并找出项目可能丢失的任何位置。
我通过枚举列表使用for循环来比较当前项目中的数字与下一个项目并检查下一个项目中的数字是否只大1。在我看来我应该使用一个 try-except 块,这样当循环的最后一次迭代是 运行 并尝试与不存在的下一个项目进行比较时,我不会收到 IndexError。
file_list = []
for i in range(100):
file_list.append('img' + str(i).zfill(3) + '.tif')
del file_list[50]
for i, file in enumerate(file_list):
try:
if int(file[3:6]) + 1 != int(file_list[i + 1][3:6]):
return 'File missing after {}'.format(file_list[i])
except IndexError:
print('IndexError at i = {}'.format(i))
此代码有效,但我了解到您应该尽量避免在 try 块本身中放置太多代码,以避免添加可能从其他位置引发异常的代码,而不是要测试的代码部分.在这种情况下,我是否应该在 try-except 块中添加一个 else 语句来放置 return 语句?在那种情况下我该如何管理 if 语句?
It seems to me that I should use a try-except block so that I don't receive an IndexError when the last iteration of the loop is ran and tries to compare to the next item that doesn't exist.
我认为更好的解决方案是编写在正常情况下不会引发异常的代码。
您可以从 second 项开始迭代并比较上一个 项:
for i in range(1, len(file_list)):
# compare file_list[i] to file_list[i-1]
我正在尝试比较列表中的项目并找出项目可能丢失的任何位置。
我通过枚举列表使用for循环来比较当前项目中的数字与下一个项目并检查下一个项目中的数字是否只大1。在我看来我应该使用一个 try-except 块,这样当循环的最后一次迭代是 运行 并尝试与不存在的下一个项目进行比较时,我不会收到 IndexError。
file_list = []
for i in range(100):
file_list.append('img' + str(i).zfill(3) + '.tif')
del file_list[50]
for i, file in enumerate(file_list):
try:
if int(file[3:6]) + 1 != int(file_list[i + 1][3:6]):
return 'File missing after {}'.format(file_list[i])
except IndexError:
print('IndexError at i = {}'.format(i))
此代码有效,但我了解到您应该尽量避免在 try 块本身中放置太多代码,以避免添加可能从其他位置引发异常的代码,而不是要测试的代码部分.在这种情况下,我是否应该在 try-except 块中添加一个 else 语句来放置 return 语句?在那种情况下我该如何管理 if 语句?
It seems to me that I should use a try-except block so that I don't receive an IndexError when the last iteration of the loop is ran and tries to compare to the next item that doesn't exist.
我认为更好的解决方案是编写在正常情况下不会引发异常的代码。
您可以从 second 项开始迭代并比较上一个 项:
for i in range(1, len(file_list)):
# compare file_list[i] to file_list[i-1]