#python #function #nested
Вопрос:
Итак, у меня есть некоторый код, который имеет простую структуру, как показано ниже. В основном у меня есть две функции. Одна функция принимает другую в качестве входных данных. То, что я хочу, чтобы произошло, — это если функция 1 выйдет из строя и приведет к ошибке, она «выйдет» и пропустит строку function2(function1()) и продолжит без завершения всего процесса.
def function1():
try:
something = some_function()
return something
except:
exit()
def function2(input):
operate(input)
function2(function1())
У кого-нибудь есть какие-либо идеи/предложения?
Ответ №1:
вместо exit
этого пусть он вернет ожидаемый результат —
def function1():
try:
something = some_function()
return something
except Exception as e:
print(f"Something went wrong: {e}")
return False
Затем вы можете действовать, основываясь на его логическом условии —
def function2(input):
if input:
operate(input)
Ответ №2:
Завершение всего процесса-это именно то, что exit
нужно. Вы должны просто оставить исключение незамеченным и выполнить function2(function1())
его в try
инструкции.
def function1():
return some_function()
def function2(i):
operate(i)
try:
function2(function1())
except Exception:
pass
Если function1
это не функция, которую вы контролируете, вы можете специально перехватить SystemExit
, что exit
вызывает, хотя я бы сделал это в как можно меньшем блоке кода.
try:
x = function(1)
except SystemExit:
pass
else:
function2(x)