Как завершить строку кода на Python при ошибках подфункций

#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)