Что такое хороший способ, чтобы добавить дополнительную информацию в исключение PythonИсключения Design Pattern для более описательных исключений
Например я вложенные словари, как так
d = {'Bob':{'lastname':'Smith'}, 'Sally':{}}
если доступ к словарю, как это Я получаю то, что я хочу, что фамилия
name = 'Bob'
value = 'lastname'
print(d[name][value])
Smith
Если я пытаюсь доступа фамилию Салли я также получить то, что я хочу что является KeyError
name = 'Sally'
value = 'lastname'
print(d[name][value])
KeyError: 'lastname'
Однако моя проблема в том, что это исключение крайне undescriptive мой код выглядит как этот
try:
name = 'Sally'
value = 'lastname'
print(d[name][value])
except KeyError:
raise KeyError("{0} has no {1}".format(name, value))
KeyError: Sally has no lastname
Это дает мне описательную ошибку, которую я ищу, но мне осталось интересно, является ли эта реализация питоновой. Есть ли лучший способ выразить это? Я пробовал просматривать документацию на python и другие распространенные пакеты, но не нашел ничего убедительного в том, что, по крайней мере, я мог видеть
Использование '' Billy'' в вашем втором элементе поднимет 'KeyError: 'Billy не имеет последнего имени'', хотя' 'Billy'' не существует. – metatoaster
Это хороший момент. Я этого не думал. Очень признателен, что вы указали на это – canyon289