Я знаю, что в общем случае не следует ожидать состояния, в котором выдается исключение из условия finally, однако я вижу случаи, когда это может произойти.
Это не совсемв предложении finally
есть что-то, что может выдавать ошибки, но это, безусловно, разрешено.Я бы посоветовал вам подумать, действительно ли это необходимо для вашего варианта использования (трудно сказать, когда ваш вопрос носит настолько общий характер).
Не могли бы вы ввести еще одну попытку, кроме вложения в предложение finally?
Да, это действительно единственный способ справиться с этим.Например, это может быть обработано так:
try:
maybe_error()
except SpecificError:
handle_error()
finally:
try:
risky_close_resource()
except OtherError:
handle_other_error()
finally:
close_everything_without_risks()