2008-09-12 11 views
13

re.compile(x)関数が(文字列を渡すと仮定して)例外をスローするかどうかはPythonのドキュメントからは分かりません。私は無効な正規表現と見なすことができるものがあると思います。より大きな疑問は、Pythonライブラリ呼び出しが例外をスローするかどうか、そしてそれらが何であるかを見つけるためにどこに行くのでしょうか?re.compile()や任意のPythonライブラリ呼び出しが例外をスローしますか?

答えて

10

まあ、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 

The documentationは遠回しに、これをサポートしています - error例外の(簡単な)説明については、「モジュールの内容」ページの一番下をご確認ください。

残念ながら、一般的な質問に対する回答はありません。私は、さまざまなモジュールのドキュメンテーションが質と徹底性が異なると考えています。関心のあるモジュールがある場合は、decompile(Pythonで書かれている場合)またはlook at the source(標準ライブラリにある場合)にすることができます。

6

Javaとは異なり、例外が発生すると宣言されている必要があります(また、必ずしもそうである必要はありませんが、別の話です)、Pythonコードはいつでも例外を発生させる可能性があります。

built-in exceptionsのリストがありますが、これらの例外がいつ発生するかについての一般的な説明があります。どのくらいの例外処理を行うか、そして正常に処理するか、トレースバックで失敗するかについては、あなた次第です。

関連する問題