Ошибки и исключения
Документация 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.