Как использовать вложенную попытку, кроме как правильно в python3 .7? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть ситуация, когда я хотел запустить некоторую строку кода и, если эти строки выполняются успешно, запустить еще несколько строк. В обоих случаях возможны ошибки / исключения. Итак, я хотел знать, какой из способов лучше использовать try catch между двумя, о которых я упоминал ниже

def function_name1():
    try:
        *Run first few lines*
        try:
            *Run second few lines*
        except Exception as ex2:
            raise Exception("second Exception - wdjk")
    except Exception as ex1:
        raise Exception("first Exception - wejk")

def function_name2():
    try:
        *Run first few lines*
    except Exception as ex1:
        raise Exception("first Exception - wejk")
    try:
        *Run second few lines*
    except Exception as ex2:
        raise Exception("second Exception - wdjk")

В function_name1 я столкнулся с одной проблемой, даже если я получаю исключение во второй строке, т.е. повышение Исключение («второе исключение - wdjk») , код возвращает или вызывает исключение из , вызывает исключение («первое исключение - wejk») . Итак, как лучше всего справиться с этим делом?

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Самое чистое решение - запустить второй try/except в наборе else первого:

try:
    # first stuff
except SomeException:
    # error handling
else:  # no error occurred
    try:
        # second stuff
    except OtherException:
        # more error handling
0 голосов
/ 27 марта 2020

Если кодовые блоки независимы друг от друга, я не понимаю, зачем вы их вкладываете. Второй вариант был бы лучше. Вы можете узнать больше об исключениях в этом посте от Real Python: https://realpython.com/python-exceptions/ Там они говорят о том, как работает try-кроме.

...