Ошибки и исключения

Документация Python об ошибках и исключениях.

SyntaxError, RunTimeError

Введите код и запустите.

print("Hello, World!)

Вы получите сообщение о синтаксической ошибке.

Исключения, инструкция try.

Исключения помогают разделить место в программе, где обнаружена ошибка, от места, где принимается решение по дальнейшим действиям. Рассмотрим код:

x = int(input("Введите x: ")) 
print(f"x = {x}")

Если мы введём, например, кот. Функция int не сможет преобразовать ввод в число, создаст исключение ValueError. Создатель функции определил, при каких условиях будет генерироваться исключение. Тот, кто вызывает функцию int, может принять решение: как обработать возникшее исключение. Для этого он использует составную инструкцию try:

try: 
    x = int(input("Введите x: ")) 
    print(f"x = {x}")
except ValueError:
    print("x не целое число")

Встретив исключение интерпретатор переходит в блок except. Другой способ записи:

try: 
    x = int(input("Введите x: ")) 
except ValueError:
    print("x не целое число")
else:
    print(f"x = {x}")

Создадим функцию для ввода целого числа


while True:
    try:
        x = int(input("x: "))
    except ValueError:
        print("x не целое число")
    else:
        break

print(f"x = {x}")

Создадим функцию.

def main():
    x = get_int()
    print(f"x = {x}")

def get_int():
    while True:
        try:
            return int(input("x: "))
        except ValueError:
            print("x не целое число")

main()

pass

Инструкция pass ничего не делает. Используем эту инструкцию, для примера рассмотренного выше:

def main():
    x = get_int()
    print(f"x = {x}")

def get_int():
    while True:
        try:
            return int(input("x: "))
        except ValueError:
            pass

main()

Изменим код.

def main():
    x = get_int("Введите x: ")
    print(f"x = {x}")

def get_int(prompt):
    while True:
        try:
            return int(input(prompt))
        except ValueError:
            pass

main()

Вы можете посмотреть документацию Python об инструкции pass.

raise

raise бросает исключение, например:

def main():
    n = get_pos_number()
    meow(n)

def get_pos_number():
    while True:
        try:
            n = int(input("Введите положительное число: "))
            if n <= 0:
                raise ValueError
            return n
        except ValueError:
            pass

def meow(n):
    for i in range(n):
        print("мяу")

main()

Справка по raise.