Основная обработка исключений со словарем - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь блок кода для обработки конкретного исключения:

try:
    my_dict.get(s)

except KeyError:
    print("This key does not exist in the dictionary")
    return None
else:
    print (my_dict.get(s))

return 

Так что это часть функции, где 's' является аргументом функции

Он работает нормально и печатает значение, соответствующее ключу, когда блок try не выдает исключение

Но когда это происходит, я не могу получить «Этот ключ не существует в словаре» для печати, и я незнаю, почему.Программа просто возвращает None в случае KeyError.

Я знаю, что это должно быть очень очевидно, но я не могу разобраться, и это расстраивает меня

Может кто-нибудь сказать, пожалуйста, чтонеправильно с этим блоком, спасибо

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Метод dict.get не вызывает KeyError.Вместо этого он возвращает None по умолчанию, когда данный ключ не найден в dict.Вместо этого вы должны использовать квадратные скобки, чтобы получить доступ к диктовке с помощью ключа, чтобы он мог повысить KeyError, если данный ключ не найден, как вы намеревались:

try:
    print(my_dict[s])
except KeyError:
    print("This key does not exist in the dictionary")
0 голосов
/ 23 октября 2018

dict.get не повышает KeyError, это безопасный метод.Вместо этого используйте my_dict[s], если хотите перехватить исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...