re.compile()或者任何给定的Python库调用是否会引发异常?

时间:2020-03-05 18:51:59  来源:igfitidea点击:

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

解决方案

回答

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

回答

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

有内置的异常列表,这些列表通常对何时可能引发这些异常进行了一些描述。由我们自己决定要执行多少异常处理,是否可以妥善处理某些内容,或者因回溯而失败。