Как мне вставить try-кроме в этом сценарии

Задача1

Напишите скрипт, который считывает строку из STDIN и вызывает исключение ValueError, если строка содержит более 10 символов, или печатает прочитанную строку.

Я написал такой код

a = input("Enter a string")
if(len(a) > 10):
    raise ValueError
else:
    print(a)

Задача2

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

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

Мой ввод будет PythonIsAmazing


person sachin mirajkar    schedule 21.01.2020    source источник
comment
Зачем вам печатать сообщение об ошибке, если программа не дала сбой?   -  person CDJB    schedule 21.01.2020
comment
это задача, поставленная передо мной для практики обработки ошибок   -  person sachin mirajkar    schedule 21.01.2020
comment
Ваша программа выйдет со сбоем, потому что вы вызываете исключение...   -  person Tomerikoo    schedule 21.01.2020


Ответы (1)


Вы можете просто обернуть все это в try ... except следующим образом:

a = input("Enter a string: ")

try:
    if(len(a) > 10):
        raise ValueError
    print(a)
except ValueError:
    print("String was longer than 10 characters")

В качестве альтернативы, если у вас есть много разных ValueErrors, которые могут быть вызваны, вы можете дать каждому отдельное сообщение об ошибке:

a = input("Enter a string: ")

try:
    if(len(a) > 10):
        raise ValueError("String was longer than 10 characters")
    print(a)
except ValueError as e:
    print(e)

Например:

Enter a string: test
test

Enter a string: PythonIsAmazing
String was longer than 10 characters
person CDJB    schedule 21.01.2020