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

pos*_*ist 17 python regex exception

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

Bla*_*rad 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
Run Code Online (Sandbox Code Playgroud)

文档确实以迂回的方式支持这一点 - 检查"模块内容"页面的底部是否有(简要)描述error异常.

不幸的是,我对这个一般性问题没有任何答案.我想各种模块的文档在质量和彻底性方面各不相同.如果有您感兴趣的特定模块,您可以对它们进行反编译(如果是用Python编写的),或者甚至查看源代码,如果它们在标准库中.


Mat*_*kel 7

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

有一个内置异常列表,通常有一些描述可能会引发这些异常的时间.由你来决定你将做多少异常处理,如果你将优雅地处理东西,或者只是追溯失败.