2008-09-12 17 views
13

मैं पायथन दस्तावेज़ से नहीं बता सकता कि re.compile (x) फ़ंक्शन एक अपवाद फेंक सकता है (माना जाता है कि आप एक स्ट्रिंग में पास करते हैं)। मुझे कल्पना है कि ऐसा कुछ है जिसे अमान्य नियमित अभिव्यक्ति माना जा सकता है। बड़ा सवाल यह है कि, मुझे यह पता लगाने के लिए कहां जाना चाहिए कि क्या दिया गया पाइथन लाइब्रेरी कॉल अपवाद फेंक सकता है और वे क्या हैं?क्या re.compile() या किसी दिए गए पायथन लाइब्रेरी कॉल ने अपवाद फेंक दिया है?

उत्तर

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

जावा के विपरीत, जहां अपवाद हैं जिन्हें उठाया जाना चाहिए (और कुछ जो नहीं होना चाहिए, लेकिन यह एक और कहानी है), किसी भी पायथन कोड किसी भी समय कोई अपवाद उठा सकता है।

built-in exceptions की एक सूची है, जो आमतौर पर इन अपवादों को उठाए जाने पर कुछ विवरण है। यह आपके ऊपर निर्भर करता है कि आप कितना अपवाद हैंडलिंग करेंगे, और यदि आप सामान को अच्छी तरह से संभाल लेंगे, या बस ट्रेसबैक के साथ असफल हो जाएंगे।

संबंधित मुद्दे