У меня есть функция f()
, которую нужно вызывать, если подняты ExceptionA
или ExceptionB
.Мне нужно звонить A()
только в случае повышения ExceptionA
, и мне нужно звонить B()
только в случае повышения ExceptionB
.Мне не нужно вызывать какие-либо функции, если не сгенерировано ни одно исключение.
Рассмотрим следующий код:
try:
some_flaky_function()
except ExceptionA:
A()
f()
except ExceptionB:
B()
f()
Этот код будет выполнять именно то, что мне нужно, однако я ищу способчтобы не было стандартного вызова f()
в обоих except
блоках.Я знаю, что блок finally
будет выполняться независимо от исключения, но он также выполняется при успешной попытке.Более того, даже если приведенный выше код обернут в функцию, то после вызова функции в блоке try
block still после * вызова функции выполняется оператор finally
.Можно ли в любом случае написать приведенный выше код одним вызовом f()
?