Я должен объявить несколько соединений в своей функции, и я использую блок finally, чтобы гарантировать, что они все закрыты в случае обнаружения какого-либо исключения. Тем не менее, я нахожусь в затруднительном положении со случаем, когда исключение происходит во время одного из устанавливаемых соединений. Мне известно, что закрытие соединений в порядке их объявления гарантирует, что даже если одно из соединений будет установлено без проблем, оно наверняка будет закрыто.
def some_func(x_connect_params,y_connect_params):
try:
x_conn = psycopg2.connect(**x_connect_params)
x_cur = x_conn.cursor()
y_conn = psycopg2.connect(**y_connect_params)
y_cur = y_conn.cursor()
# SOME CODE THAT USES CONNECTIONS
except Exception as e:
pass
finally:
x_cur.close()
x_conn.close()
y_cur.close()
y_conn.close()
Тем не менее, я бродил, есть ли способ обеспечить закрытие соединения и возможность избежать UnboundLocalError в блоке finally?