2008-09-12 6 views
13

re.compile (x) 함수가 예외를 throw 할 수 있는지 여부를 파이썬 설명서에서 알 수 없습니다 (문자열을 전달한다고 가정). 잘못된 정규 표현식으로 간주 될 수있는 것이 있다고 생각합니다. 더 큰 문제는, 주어진 파이썬 라이브러리 호출이 예외를 던질 수 있는지, 그리고 그것들이 무엇인지 알아 내려면 어디로 가야 하는가?re.compile() 또는 주어진 파이썬 라이브러리 호출이 예외를 throw합니까?

답변

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 (파이썬으로 작성된 경우) 또는 look at the source (표준 라이브러리에있는 경우)을 사용할 수 있습니다.

6

Java와 달리 예외는 발생해야하며 (일부는 필요하지 않지만 또 다른 이야기 임), 모든 Python 코드는 언제든지 예외를 발생시킬 수 있습니다.

built-in exceptions의 목록이 있으며 일반적으로 이러한 예외가 발생할 수있는시기에 대한 설명이 있습니다. 얼마나 많은 예외 처리를 할 것인가, 그리고 물건을 정상적으로 처리 할 것인지, 아니면 추적만으로 실패 할 것인지는 귀하에게 달려 있습니다.

관련 문제