Как мы можем получить список исключений в Python программно?

#python #exception

#python #исключение

Вопрос:

https://www.programiz.com/python-programming/exceptions

В Python есть список исключений, и я пытаюсь составить список (или набор) имен исключений.

Я мог бы просто жестко запрограммировать имена, но есть ли способ как-то сделать это программно? Например, импортировать класс exception и получить все эти типы исключений и поместить их в список строк?

Комментарии:

1. AFAIK: docs.python.org/3/library/exceptions.html

2. Это может помочь узнать, что вы собираетесь делать с этим списком. Не забывайте, что импортированные модули и пользователи могут определять свои собственные подклассы исключений.

Ответ №1:

Чтобы получить список встроенных исключений (не определяемых пользователем), вы можете сделать это:

 import builtins

list_of_exception_names = [
    name for name, value in builtins.__dict__.items() 
    if isinstance(value, type) and issubclass(value, BaseException)
]
  

Комментарии:

1. Этот код не будет работать внутри модуля. __builtins__ иногда является dict, а не модулем, и в этом случае __builtins__.__dict__ доступ завершается ошибкой. Вы всегда должны использовать модуль builtins or __builtin__ , а не __builtins__ детали реализации.

2. Вот демонстрация сбоя.

3. @user2357112 спасибо за ваши комментарии, улучшил мой ответ.