Я не могу сказать из документации Python, может ли функция re.compile(x) генерировать исключение (при условии, что вы передаете строку). Я полагаю, что есть что-то, что можно считать недействительным регулярным выражением. Чем больше вопрос, где я могу найти, может ли данный вызов библиотеки Python генерировать исключение (-ы) и что это такое?
Вызывает ли re.compile() или любой вызов библиотеки Python исключение?
Ответ 1
Ну, 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) или даже посмотрите на источник, если они находятся в стандартной библиотеке.
Ответ 2
В отличие от Java, где есть исключения, которые должны быть объявлены поднятыми (и некоторые из них не обязательно должны быть, но эта другая история), любой код Python может в любое время вызвать любое исключение.
Есть список встроенных исключений, который обычно имеет некоторое описание того, когда эти исключения могут быть подняты. Это зависит от того, насколько вы будете обрабатывать исключительные ситуации, и если вы обработаете материал грациозно или просто потерпите неудачу с трассировкой.