Являются ли разделы обработки else и finally избыточности исключений? Например, существует ли разница между следующими двумя фрагментами кода?
try:
foo = open("foo.txt")
except IOError:
print("error")
else:
print(foo.read())
finally:
print("finished")
и
try:
foo = open("foo.txt")
print(foo.read())
except IOError:
print("error")
print("finished")
В общем случае, нельзя ли содержимое else всегда перемещаться в try и не может ли содержимое finally просто перемещаться за пределы блока try/catch? Если да, то какова цель else и finally? Это просто для повышения удобочитаемости?