Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Задача: создать блок исключения для обработки ошибки в нужном блоке кода, а внутри него разместить ещё один блок обработки ошибок try-except.

Пример для версии Python 3.5.

Программа работает следующим образом. Нужно ввести правильный пароль, а если он будет введён неверно, программа предложит сделать это повторно. При удачно введении программа закончит своё выполнение, выдав на экран логичную надпись.

Для начала следует сразу же ввести корректный пароль (1234). Для этого создаём класс MyException и метод func_with_except, в котором и будет прописана основная часть программы.

class MyException:
    def func_with_except(self):

Цикл try-xcept оформляем в цикл while True, чтобы была возможность вернуться к началу программы. Если ввести пароль правильный (1234), на экран выведется надпись, что пароль корректный и программа закончит своё выполнение с выведением информации об этом на экран.

        while True:
            try:
                pas=int(input("Enter here a password: "))
                if pas == 1234:
                    print("Password is correct")
                    print("Programm was closed correct")
                    exit()

При введении неправильного циферного пароля выведется надпись, что вы ошиблись и программа предложит повторить. Если ввести 1, программа запустится снова, о чём пользователя будет проинформировано. Если же отличный от единицы цифру на ответ на вопрос повтора программы, программа просто остановит свою работу. Делается это при помощи функции exit().

                else:
                    print("You are wrong")
                    try:
                        yes_or_no=int(input("Repeat? "))
                        if yes_or_no==1:
                            print("Run programm again")
                        else:
                            print("Programm was closed correct")
                            exit()

А вот если ввести букву вместо цифры 1 или другой в поле Repeat, произойдёт ошибка и обработается исключение ValueError, которое покажет пользователю информацию на экране о том, что ввод букв некорректен в данном случае и программа предложит ответить на вопрос (введение корректного пароля) ещё раз. Программа таким образом запустится заново благодаря циклу. Для визуального облегчения просмотра результатов программы используется пунктирная линия.

                    except ValueError as error:
                        print("invalid literal for int")
                        print("Please try enter correct password again")
                        print("------------------------------------------")

Если вместо верного пароля ввести буквы, произойдёт исключение ValueError, которое выведет соответствующую информацию для пользователя на экран, тем самым показывая, что исключение было корректно обработано. Программа выведет также на экран информацию, что нужно ещё раз попробовать ввести правильный пароль. Также рисуем пунктирную линию, чтобы разграничить пространство и не запутаться.

            except ValueError as error:
                print("invalid literal for int")
                print("You enter invalid number. Please try again")
                print("------------------------------------------")

Ну и не забываем создать экземпляр класса, а затем обратиться к его методу для вызова.

obj=MyException()
obj.func_with_except()

Теперь складываем все кусочки пазла и получаем следующую простую программу исключения в исключении при помощи цикла в Python 3.5.

class MyException:
    def func_with_except(self):
        while True:
            try:
                pas=int(input("Enter here a password: "))
                if pas == 1234:
                    print("Password is correct")
                    print("Programm was closed correct")
                    exit()
                else:
                    print("You are wrong")
                    try:
                        yes_or_no=int(input("Repeat? "))
                        if yes_or_no==1:
                            print("Run programm again")
                        else:
                            print("Programm was closed correct")
                            exit()
                    except ValueError as error:
                        print("invalid literal for int")
                        print("Please try enter correct password again")
                        print("------------------------------------------")
            except ValueError as error:
                print("invalid literal for int")
                print("You enter invalid number. Please try again")
                print("------------------------------------------")
obj=MyException()
obj.func_with_except()