2016-06-09 1 views
0

Я занимаюсь обработкой исключений, и когда я пытаюсь выполнить следующий код, python не обрабатывает исключение TypeError, если я вводим текст вместо числа. Ниже приводится код:Обработка исключений Python3

num1=input("Enter the first number : ") 
num2=input("Enter the second number : ") 
try: 
    num1=int(num1) 
    num2=int(num2) 
except TypeError: 
    print("Sorry, that wasn't a number, please try again") 
else: 
    print(add) 
+0

Он вызывает «ValueError», а не 'TypeError' –

ответ

1

Это потому, что вы не отслеживаете правильную ошибку:

>>> int("not a number") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: 'not a number' 

ValueError является то, что вы ищете.

+0

Спасибо, теперь это сработало. Почему мы используем TypeError? –

+0

Цитата из https://docs.python.org/3/library/exceptions.html. 'TypeError' - Поднимается, когда операция или функция применяется к объекту несоответствующего типа. Связанное значение представляет собой строку, содержащую сведения о несоответствии типов. Попробуйте ввести «2» + 2 в CLI python. –

+1

@KushagraChugh ੴ: 'input()' всегда возвращает строку, а 'int()' принимает строковый объект в качестве аргумента. Если вы должны были передать что-то в том, что * не было строкой * (а не любым другим принятым типом), вы получите 'TypeError', например. 'Не Int (None)'. Но так как вы всегда проходите в строке, это не так. –

Смежные вопросы