Вызывает ли re.compile () или любой заданный вызов библиотеки Python исключение? - PullRequest
17 голосов
/ 12 сентября 2008

Я не могу сказать из документации Python, может ли функция re.compile (x) вызвать исключение (при условии, что вы передаете строку). Я предполагаю, что есть нечто, что можно считать недопустимым регулярным выражением. Более широкий вопрос: куда мне обратиться, чтобы выяснить, может ли данный вызов библиотеки Python вызвать исключение (я) и что это такое?

Ответы [ 2 ]

11 голосов
/ 12 сентября 2008

Ну, re.compile определенно может:

>>> import re
>>> re.compile('he(lo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\re.py", line 180, in compile
    return _compile(pattern, flags)
  File "C:\Python25\lib\re.py", line 233, in _compile
    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis

Документация поддерживает это окольным путем - проверьте в нижней части страницы «Содержимое модуля» (краткое) описание исключения error.

К сожалению, у меня нет ответа на общий вопрос. Я предполагаю, что документация для различных модулей отличается по качеству и тщательности. Если бы были определенные модули, которые вас интересовали, вы могли бы декомпилировать их (если они написаны на Python) или даже посмотреть на источник , если они находятся в стандартной библиотеке .

7 голосов
/ 12 сентября 2008

В отличие от Java, где есть исключения, которые должны быть объявлены как повышенные (а некоторые нет необходимости, но это уже другая история), любой код Python может вызвать любое исключение в любое время.

Существует список встроенных исключений , в котором обычно есть некоторое описание того, когда могут возникать эти исключения. Вам решать, сколько обработки исключений вы сделаете, и если вы будете обрабатывать вещи изящно, или просто потерпите неудачу с отслеживанием.

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