17

我无法从 Python 文档中判断 re.compile(x) 函数是否可能引发异常(假设您传入一个字符串)。我想有些东西可以被认为是无效的正则表达式。更大的问题是,我在哪里可以找到给定的 Python 库调用是否会引发异常以及这些异常是什么?

4

2 回答 2

12

好吧,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 编写),甚至查看源代码(如果它们在标准库中)。

于 2008-09-12T01:42:38.357 回答
7

与 Java 不同,有一些异常必须声明才能引发(有些不是必须的,但这是另一回事),任何 Python 代码都可能随时引发任何异常。

有一个内置异常列表,其中通常有一些关于何时可能引发这些异常的描述。由您决定您将执行多少异常处理,以及您是否会优雅地处理事情,或者只是因为回溯而失败。

于 2008-09-12T02:10:16.467 回答