Обработка ошибок неоднозначности?

Я использую wikipedia библиотека, и я хочу справиться с DisambiguationError как исключение. Моя первая попытка была

try:
     wikipedia.page('equipment') # could be any ambiguous term
except DisambiguationError:
     pass

Во время исполнения строка 3 не достигнута. Более общий вопрос: как я могу найти тип ошибки для библиотечного класса, подобного этому?

1 ответ

Решение

Вот рабочий пример:

import wikipedia

try:
    wikipedia.page('equipment')
except wikipedia.exceptions.DisambiguationError as e:
    print("Error: {0}".format(e))

Относительно вашего более общего вопроса how can I find the error type for a library-specific class like this?мой трюк на самом деле довольно прост, я имею тенденцию захватывать исключения, а затем просто печатать __class__Таким образом, я буду знать, какое конкретное исключение мне нужно запечатлеть.

Один пример выяснения того, какое конкретное исключение нужно зафиксировать здесь:

try:
    0/0
except Exception as e:
    print("Exception.__class__: {0}".format(e.__class__))

Это напечатало бы Exception.__class__: <type 'exceptions.ZeroDivisionError'>так я знал exceptions.ZeroDivisionError будет точное исключение, чтобы иметь дело с чем-то более общим

Другие вопросы по тегам